23
23
import oracle .kubernetes .operator .KubernetesConstants ;
24
24
import oracle .kubernetes .operator .LabelConstants ;
25
25
import oracle .kubernetes .operator .ProcessingConstants ;
26
+ import oracle .kubernetes .operator .domain .model .oracle .kubernetes .weblogic .domain .v1 .Domain ;
27
+ import oracle .kubernetes .operator .domain .model .oracle .kubernetes .weblogic .domain .v1 .DomainSpec ;
26
28
import oracle .kubernetes .operator .logging .LoggingFacade ;
27
29
import oracle .kubernetes .operator .logging .LoggingFactory ;
28
30
import oracle .kubernetes .operator .wlsconfig .WlsClusterConfig ;
@@ -45,86 +47,120 @@ private IngressHelper() {}
45
47
* @return Step to create ingress or update cluster with an entry for this server
46
48
*/
47
49
public static Step createAddServerStep (Step next ) {
48
- return new AddServerStep (next );
50
+ return new BeforeAddServerStep (next );
49
51
}
50
52
51
- private static class AddServerStep extends Step {
52
-
53
- private AddServerStep (Step next ) {
53
+ private static class BeforeAddServerStep extends Step {
54
+ public BeforeAddServerStep (Step next ) {
54
55
super (next );
55
56
}
56
57
57
58
@ Override
58
59
public NextAction apply (Packet packet ) {
59
- String clusterName = ( String ) packet .get ( ProcessingConstants . CLUSTER_NAME );
60
+ DomainPresenceInfo info = packet .getSPI ( DomainPresenceInfo . class );
60
61
String serverName = (String ) packet .get (ProcessingConstants .SERVER_NAME );
61
62
62
- DomainPresenceInfo info = packet .getSPI (DomainPresenceInfo .class );
63
- ServerKubernetesObjects sko = info .getServers ().get (serverName );
64
- if (sko != null ) {
65
- V1Service service = sko .getService ().get ();
66
- if (service != null ) {
67
- // If we have a cluster, create a cluster level ingress
68
- if (clusterName != null ) {
69
- String ingressName = CallBuilder .toDNS1123LegalName (
70
- info .getDomain ().getSpec ().getDomainUID () + "-" + clusterName );
71
- V1ObjectMeta meta = service .getMetadata ();
72
- return doNext (CallBuilder .create ().readIngressAsync (
73
- ingressName , meta .getNamespace (), new ResponseStep <V1beta1Ingress >(next ) {
74
- @ Override
75
- public NextAction onFailure (Packet packet , ApiException e , int statusCode ,
76
- Map <String , List <String >> responseHeaders ) {
77
- if (statusCode == CallBuilder .NOT_FOUND ) {
78
- return onSuccess (packet , null , statusCode , responseHeaders );
79
- }
80
- return super .onFailure (AddServerStep .this , packet , e , statusCode , responseHeaders );
81
- }
63
+ Domain dom = info .getDomain ();
64
+ V1ObjectMeta meta = dom .getMetadata ();
65
+ DomainSpec spec = dom .getSpec ();
66
+ String namespace = meta .getNamespace ();
82
67
83
- @ Override
84
- public NextAction onSuccess (Packet packet , V1beta1Ingress result , int statusCode ,
85
- Map <String , List <String >> responseHeaders ) {
86
- if (result == null ) {
87
- V1beta1Ingress v1beta1Ingress = prepareV1beta1Ingress (ingressName , clusterName , service , info );
88
- return doNext (CallBuilder .create ().createIngressAsync (meta .getNamespace (), v1beta1Ingress , new ResponseStep <V1beta1Ingress >(next ) {
89
- @ Override
90
- public NextAction onFailure (Packet packet , ApiException e , int statusCode ,
91
- Map <String , List <String >> responseHeaders ) {
92
- return super .onFailure (AddServerStep .this , packet , e , statusCode , responseHeaders );
93
- }
94
-
95
- @ Override
96
- public NextAction onSuccess (Packet packet , V1beta1Ingress result , int statusCode ,
97
- Map <String , List <String >> responseHeaders ) {
98
- info .getIngresses ().put (clusterName , result );
99
- return doNext (packet );
100
- }
101
- }), packet );
102
- } else {
103
- if (addV1beta1HTTPIngressPath (result , service )) {
104
- return doNext (packet );
105
- }
106
- return doNext (CallBuilder .create ().replaceIngressAsync (ingressName , meta .getNamespace (), result , new ResponseStep <V1beta1Ingress >(next ) {
107
- @ Override
108
- public NextAction onFailure (Packet packet , ApiException e , int statusCode ,
109
- Map <String , List <String >> responseHeaders ) {
110
- return super .onFailure (AddServerStep .this , packet , e , statusCode , responseHeaders );
111
- }
112
-
113
- @ Override
114
- public NextAction onSuccess (Packet packet , V1beta1Ingress result , int statusCode ,
115
- Map <String , List <String >> responseHeaders ) {
116
- info .getIngresses ().put (clusterName , result );
117
- return doNext (packet );
118
- }
119
- }), packet );
120
- }
121
- }
122
- }), packet );
68
+ String weblogicDomainUID = spec .getDomainUID ();
69
+
70
+ String name = CallBuilder .toDNS1123LegalName (weblogicDomainUID + "-" + serverName );
71
+
72
+ Step read = CallBuilder .create ().readServiceAsync (name , namespace , new ResponseStep <V1Service >(next ) {
73
+ @ Override
74
+ public NextAction onFailure (Packet packet , ApiException e , int statusCode ,
75
+ Map <String , List <String >> responseHeaders ) {
76
+ if (statusCode == CallBuilder .NOT_FOUND ) {
77
+ return onSuccess (packet , null , statusCode , responseHeaders );
123
78
}
79
+ return super .onFailure (packet , e , statusCode , responseHeaders );
124
80
}
125
81
126
- }
82
+ @ Override
83
+ public NextAction onSuccess (Packet packet , V1Service result , int statusCode ,
84
+ Map <String , List <String >> responseHeaders ) {
85
+ return doNext (new AddServerStep (next , result ), packet );
86
+ }
87
+ });
88
+
89
+ return doNext (read , packet );
90
+ }
91
+ }
92
+
93
+ private static class AddServerStep extends Step {
94
+ private final V1Service service ;
95
+
96
+ private AddServerStep (Step next , V1Service service ) {
97
+ super (next );
98
+ this .service = service ;
99
+ }
100
+
101
+ @ Override
102
+ public NextAction apply (Packet packet ) {
103
+ DomainPresenceInfo info = packet .getSPI (DomainPresenceInfo .class );
104
+ String clusterName = (String ) packet .get (ProcessingConstants .CLUSTER_NAME );
127
105
106
+ // If we have a cluster, create a cluster level ingress
107
+ if (clusterName != null ) {
108
+ String ingressName = CallBuilder .toDNS1123LegalName (
109
+ info .getDomain ().getSpec ().getDomainUID () + "-" + clusterName );
110
+ V1ObjectMeta meta = service .getMetadata ();
111
+ return doNext (CallBuilder .create ().readIngressAsync (
112
+ ingressName , meta .getNamespace (), new ResponseStep <V1beta1Ingress >(next ) {
113
+ @ Override
114
+ public NextAction onFailure (Packet packet , ApiException e , int statusCode ,
115
+ Map <String , List <String >> responseHeaders ) {
116
+ if (statusCode == CallBuilder .NOT_FOUND ) {
117
+ return onSuccess (packet , null , statusCode , responseHeaders );
118
+ }
119
+ return super .onFailure (AddServerStep .this , packet , e , statusCode , responseHeaders );
120
+ }
121
+
122
+ @ Override
123
+ public NextAction onSuccess (Packet packet , V1beta1Ingress result , int statusCode ,
124
+ Map <String , List <String >> responseHeaders ) {
125
+ if (result == null ) {
126
+ V1beta1Ingress v1beta1Ingress = prepareV1beta1Ingress (ingressName , clusterName , service , info );
127
+ return doNext (CallBuilder .create ().createIngressAsync (meta .getNamespace (), v1beta1Ingress , new ResponseStep <V1beta1Ingress >(next ) {
128
+ @ Override
129
+ public NextAction onFailure (Packet packet , ApiException e , int statusCode ,
130
+ Map <String , List <String >> responseHeaders ) {
131
+ return super .onFailure (AddServerStep .this , packet , e , statusCode , responseHeaders );
132
+ }
133
+
134
+ @ Override
135
+ public NextAction onSuccess (Packet packet , V1beta1Ingress result , int statusCode ,
136
+ Map <String , List <String >> responseHeaders ) {
137
+ info .getIngresses ().put (clusterName , result );
138
+ return doNext (packet );
139
+ }
140
+ }), packet );
141
+ } else {
142
+ if (addV1beta1HTTPIngressPath (result , service )) {
143
+ return doNext (packet );
144
+ }
145
+ return doNext (CallBuilder .create ().replaceIngressAsync (ingressName , meta .getNamespace (), result , new ResponseStep <V1beta1Ingress >(next ) {
146
+ @ Override
147
+ public NextAction onFailure (Packet packet , ApiException e , int statusCode ,
148
+ Map <String , List <String >> responseHeaders ) {
149
+ return super .onFailure (AddServerStep .this , packet , e , statusCode , responseHeaders );
150
+ }
151
+
152
+ @ Override
153
+ public NextAction onSuccess (Packet packet , V1beta1Ingress result , int statusCode ,
154
+ Map <String , List <String >> responseHeaders ) {
155
+ info .getIngresses ().put (clusterName , result );
156
+ return doNext (packet );
157
+ }
158
+ }), packet );
159
+ }
160
+ }
161
+ }), packet );
162
+ }
163
+
128
164
return doNext (packet );
129
165
}
130
166
}
0 commit comments