Skip to content

Commit f2c29f8

Browse files
committed
Less reliance on in-memory cache of k8s objects
1 parent 1a66d37 commit f2c29f8

File tree

5 files changed

+301
-291
lines changed

5 files changed

+301
-291
lines changed

src/main/java/oracle/kubernetes/operator/Main.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -950,7 +950,7 @@ public NextAction apply(Packet packet) {
950950

951951
return doNext(IngressHelper.createRemoveServerStep(serverName, sko.getService().get(),
952952
new DeleteServiceListStep(services,
953-
PodHelper.deletePodStep(sko,
953+
PodHelper.deletePodStep(sko, serverName,
954954
new ManagedServerDownFinalizeStep(serverName, next)))), packet);
955955
}
956956
}

src/main/java/oracle/kubernetes/operator/PodWatcher.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,6 @@ public boolean isStopping() {
129129
private void processEventCallback(Watch.Response<V1Pod> item) {
130130
LOGGER.entering();
131131

132-
destination.eventCallback(item);
133-
134132
V1Pod pod;
135133
Boolean previous;
136134
String domainUID;
@@ -209,6 +207,8 @@ private void processEventCallback(Watch.Response<V1Pod> item) {
209207
default:
210208
}
211209

210+
destination.eventCallback(item);
211+
212212
LOGGER.exiting();
213213
}
214214

src/main/java/oracle/kubernetes/operator/helpers/IngressHelper.java

Lines changed: 102 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import oracle.kubernetes.operator.KubernetesConstants;
2424
import oracle.kubernetes.operator.LabelConstants;
2525
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;
2628
import oracle.kubernetes.operator.logging.LoggingFacade;
2729
import oracle.kubernetes.operator.logging.LoggingFactory;
2830
import oracle.kubernetes.operator.wlsconfig.WlsClusterConfig;
@@ -45,86 +47,120 @@ private IngressHelper() {}
4547
* @return Step to create ingress or update cluster with an entry for this server
4648
*/
4749
public static Step createAddServerStep(Step next) {
48-
return new AddServerStep(next);
50+
return new BeforeAddServerStep(next);
4951
}
5052

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) {
5455
super(next);
5556
}
5657

5758
@Override
5859
public NextAction apply(Packet packet) {
59-
String clusterName = (String) packet.get(ProcessingConstants.CLUSTER_NAME);
60+
DomainPresenceInfo info = packet.getSPI(DomainPresenceInfo.class);
6061
String serverName = (String) packet.get(ProcessingConstants.SERVER_NAME);
6162

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();
8267

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);
12378
}
79+
return super.onFailure(packet, e, statusCode, responseHeaders);
12480
}
12581

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);
127105

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+
128164
return doNext(packet);
129165
}
130166
}

0 commit comments

Comments
 (0)