Skip to content

Commit dea3092

Browse files
authored
Merge pull request #201 from oracle/extract-steps
Move inner classes to their own files
2 parents bdd031d + bfcb77f commit dea3092

19 files changed

+1206
-855
lines changed

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

Lines changed: 18 additions & 850 deletions
Large diffs are not rendered by default.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Copyright 2017, 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
3+
4+
package oracle.kubernetes.operator.steps;
5+
6+
import java.util.List;
7+
8+
import oracle.kubernetes.operator.ProcessingConstants;
9+
import oracle.kubernetes.operator.helpers.DomainPresenceInfo;
10+
import oracle.kubernetes.operator.work.NextAction;
11+
import oracle.kubernetes.operator.work.Packet;
12+
import oracle.kubernetes.operator.work.Step;
13+
import oracle.kubernetes.weblogic.domain.v1.Domain;
14+
import oracle.kubernetes.weblogic.domain.v1.DomainSpec;
15+
import oracle.kubernetes.weblogic.domain.v1.ServerStartup;
16+
17+
public class BeforeAdminServiceStep extends Step {
18+
public BeforeAdminServiceStep(Step next) {
19+
super(next);
20+
}
21+
22+
@Override
23+
public NextAction apply(Packet packet) {
24+
DomainPresenceInfo info = packet.getSPI(DomainPresenceInfo.class);
25+
26+
Domain dom = info.getDomain();
27+
DomainSpec spec = dom.getSpec();
28+
29+
packet.put(ProcessingConstants.SERVER_NAME, spec.getAsName());
30+
packet.put(ProcessingConstants.PORT, spec.getAsPort());
31+
List<ServerStartup> ssl = spec.getServerStartup();
32+
if (ssl != null) {
33+
for (ServerStartup ss : ssl) {
34+
if (ss.getServerName().equals(spec.getAsName())) {
35+
packet.put(ProcessingConstants.NODE_PORT, ss.getNodePort());
36+
break;
37+
}
38+
}
39+
}
40+
return doNext(packet);
41+
}
42+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Copyright 2017, 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
3+
4+
package oracle.kubernetes.operator.steps;
5+
6+
import java.util.ArrayList;
7+
import java.util.Collection;
8+
import java.util.Map;
9+
10+
import oracle.kubernetes.operator.ProcessingConstants;
11+
import oracle.kubernetes.operator.helpers.DomainPresenceInfo;
12+
import oracle.kubernetes.operator.helpers.IngressHelper;
13+
import oracle.kubernetes.operator.helpers.ServiceHelper;
14+
import oracle.kubernetes.operator.wlsconfig.WlsClusterConfig;
15+
import oracle.kubernetes.operator.wlsconfig.WlsDomainConfig;
16+
import oracle.kubernetes.operator.wlsconfig.WlsServerConfig;
17+
import oracle.kubernetes.operator.work.NextAction;
18+
import oracle.kubernetes.operator.work.Packet;
19+
import oracle.kubernetes.operator.work.Step;
20+
21+
public class ClusterServicesStep extends Step {
22+
private final DomainPresenceInfo info;
23+
24+
public ClusterServicesStep(DomainPresenceInfo info, Step next) {
25+
super(next);
26+
this.info = info;
27+
}
28+
29+
@Override
30+
public NextAction apply(Packet packet) {
31+
Collection<StepAndPacket> startDetails = new ArrayList<>();
32+
33+
// Add cluster services
34+
WlsDomainConfig scan = info.getScan();
35+
if (scan != null) {
36+
for (Map.Entry<String, WlsClusterConfig> entry : scan.getClusterConfigs().entrySet()) {
37+
Packet p = packet.clone();
38+
WlsClusterConfig clusterConfig = entry.getValue();
39+
p.put(ProcessingConstants.CLUSTER_SCAN, clusterConfig);
40+
p.put(ProcessingConstants.CLUSTER_NAME, clusterConfig.getClusterName());
41+
for (WlsServerConfig serverConfig : clusterConfig.getServerConfigs()) {
42+
p.put(ProcessingConstants.PORT, serverConfig.getListenPort());
43+
break;
44+
}
45+
46+
startDetails
47+
.add(new StepAndPacket(ServiceHelper.createForClusterStep(IngressHelper.createClusterStep(null)), p));
48+
}
49+
}
50+
51+
if (startDetails.isEmpty()) {
52+
return doNext(packet);
53+
}
54+
return doForkJoin(next, packet, startDetails);
55+
}
56+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright 2017, 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
3+
4+
package oracle.kubernetes.operator.steps;
5+
6+
import java.util.Map;
7+
import java.util.concurrent.ThreadFactory;
8+
import java.util.concurrent.atomic.AtomicBoolean;
9+
10+
import io.kubernetes.client.models.V1ConfigMap;
11+
import oracle.kubernetes.operator.ConfigMapWatcher;
12+
import oracle.kubernetes.operator.ProcessingConstants;
13+
import oracle.kubernetes.operator.watcher.WatchListener;
14+
import oracle.kubernetes.operator.work.ContainerResolver;
15+
import oracle.kubernetes.operator.work.NextAction;
16+
import oracle.kubernetes.operator.work.Packet;
17+
import oracle.kubernetes.operator.work.Step;
18+
19+
public class ConfigMapAfterStep extends Step {
20+
private final String ns;
21+
private final Map<String, ConfigMapWatcher> configMapWatchers;
22+
private final AtomicBoolean stopping;
23+
private final WatchListener<V1ConfigMap> listener;
24+
25+
public ConfigMapAfterStep(String ns, Map<String, ConfigMapWatcher> configMapWatchers,
26+
AtomicBoolean stopping, WatchListener<V1ConfigMap> listener, Step next) {
27+
super(next);
28+
this.ns = ns;
29+
this.configMapWatchers = configMapWatchers;
30+
this.stopping = stopping;
31+
this.listener = listener;
32+
}
33+
34+
@Override
35+
public NextAction apply(Packet packet) {
36+
V1ConfigMap result = (V1ConfigMap) packet.get(ProcessingConstants.SCRIPT_CONFIG_MAP);
37+
configMapWatchers.put(ns,
38+
createConfigMapWatcher(ns, result != null ? result.getMetadata().getResourceVersion() : ""));
39+
return doNext(packet);
40+
}
41+
42+
private ConfigMapWatcher createConfigMapWatcher(String namespace, String initialResourceVersion) {
43+
ThreadFactory factory = ContainerResolver.getInstance().getContainer().getSPI(ThreadFactory.class);
44+
45+
return ConfigMapWatcher.create(factory, namespace, initialResourceVersion, listener, stopping);
46+
}
47+
}
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
// Copyright 2017, 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
3+
4+
package oracle.kubernetes.operator.steps;
5+
6+
import java.util.List;
7+
import java.util.Map;
8+
9+
import io.kubernetes.client.ApiException;
10+
import io.kubernetes.client.models.V1ServiceList;
11+
import io.kubernetes.client.models.V1Status;
12+
import io.kubernetes.client.models.V1beta1IngressList;
13+
import oracle.kubernetes.operator.LabelConstants;
14+
import oracle.kubernetes.operator.helpers.CallBuilder;
15+
import oracle.kubernetes.operator.helpers.CallBuilderFactory;
16+
import oracle.kubernetes.operator.helpers.ResponseStep;
17+
import oracle.kubernetes.operator.logging.LoggingFacade;
18+
import oracle.kubernetes.operator.logging.LoggingFactory;
19+
import oracle.kubernetes.operator.logging.MessageKeys;
20+
import oracle.kubernetes.operator.work.ContainerResolver;
21+
import oracle.kubernetes.operator.work.NextAction;
22+
import oracle.kubernetes.operator.work.Packet;
23+
import oracle.kubernetes.operator.work.Step;
24+
25+
public class DeleteDomainStep extends Step {
26+
private static final LoggingFacade LOGGER = LoggingFactory.getLogger("Operator", "Operator");
27+
28+
private final String namespace;
29+
private final String domainUID;
30+
31+
public DeleteDomainStep(String namespace, String domainUID) {
32+
super(null);
33+
this.namespace = namespace;
34+
this.domainUID = domainUID;
35+
}
36+
37+
@Override
38+
public NextAction apply(Packet packet) {
39+
CallBuilderFactory factory = ContainerResolver.getInstance().getContainer().getSPI(CallBuilderFactory.class);
40+
41+
Step deletePods = factory.create().with($ -> {
42+
$.labelSelector = LabelConstants.DOMAINUID_LABEL + "=" + domainUID + ","
43+
+ LabelConstants.CREATEDBYOPERATOR_LABEL;
44+
}).deleteCollectionPodAsync(namespace, new ResponseStep<V1Status>(next) {
45+
@Override
46+
public NextAction onFailure(Packet packet, ApiException e, int statusCode,
47+
Map<String, List<String>> responseHeaders) {
48+
if (statusCode == CallBuilder.NOT_FOUND) {
49+
return onSuccess(packet, null, statusCode, responseHeaders);
50+
}
51+
return super.onFailure(packet, e, statusCode, responseHeaders);
52+
}
53+
54+
@Override
55+
public NextAction onSuccess(Packet packet, V1Status result, int statusCode,
56+
Map<String, List<String>> responseHeaders) {
57+
return doNext(packet);
58+
}
59+
});
60+
61+
Step serviceList = factory.create().with($ -> {
62+
$.labelSelector = LabelConstants.DOMAINUID_LABEL + "=" + domainUID + ","
63+
+ LabelConstants.CREATEDBYOPERATOR_LABEL;
64+
}).listServiceAsync(namespace, new ResponseStep<V1ServiceList>(deletePods) {
65+
@Override
66+
public NextAction onFailure(Packet packet, ApiException e, int statusCode,
67+
Map<String, List<String>> responseHeaders) {
68+
if (statusCode == CallBuilder.NOT_FOUND) {
69+
return onSuccess(packet, null, statusCode, responseHeaders);
70+
}
71+
return super.onFailure(packet, e, statusCode, responseHeaders);
72+
}
73+
74+
@Override
75+
public NextAction onSuccess(Packet packet, V1ServiceList result, int statusCode,
76+
Map<String, List<String>> responseHeaders) {
77+
if (result != null) {
78+
return doNext(new DeleteServiceListStep(result.getItems(), deletePods), packet);
79+
}
80+
return doNext(packet);
81+
}
82+
});
83+
84+
LOGGER.finer(MessageKeys.LIST_INGRESS_FOR_DOMAIN, domainUID, namespace);
85+
Step deleteIngress = factory.create().with($ -> {
86+
$.labelSelector = LabelConstants.DOMAINUID_LABEL + "=" + domainUID + ","
87+
+ LabelConstants.CREATEDBYOPERATOR_LABEL;
88+
}).listIngressAsync(namespace, new ResponseStep<V1beta1IngressList>(serviceList) {
89+
@Override
90+
public NextAction onFailure(Packet packet, ApiException e, int statusCode,
91+
Map<String, List<String>> responseHeaders) {
92+
if (statusCode == CallBuilder.NOT_FOUND) {
93+
return onSuccess(packet, null, statusCode, responseHeaders);
94+
}
95+
return super.onFailure(packet, e, statusCode, responseHeaders);
96+
}
97+
98+
@Override
99+
public NextAction onSuccess(Packet packet, V1beta1IngressList result, int statusCode,
100+
Map<String, List<String>> responseHeaders) {
101+
if (result != null) {
102+
103+
return doNext(new DeleteIngressListStep(result.getItems(), serviceList), packet);
104+
}
105+
return doNext(packet);
106+
}
107+
});
108+
109+
return doNext(deleteIngress, packet);
110+
}
111+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// Copyright 2017, 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
3+
4+
package oracle.kubernetes.operator.steps;
5+
6+
import java.util.Collection;
7+
import java.util.Iterator;
8+
import java.util.List;
9+
import java.util.Map;
10+
11+
import io.kubernetes.client.ApiException;
12+
import io.kubernetes.client.models.V1DeleteOptions;
13+
import io.kubernetes.client.models.V1ObjectMeta;
14+
import io.kubernetes.client.models.V1Status;
15+
import io.kubernetes.client.models.V1beta1Ingress;
16+
import oracle.kubernetes.operator.helpers.CallBuilder;
17+
import oracle.kubernetes.operator.helpers.CallBuilderFactory;
18+
import oracle.kubernetes.operator.helpers.ResponseStep;
19+
import oracle.kubernetes.operator.logging.LoggingFacade;
20+
import oracle.kubernetes.operator.logging.LoggingFactory;
21+
import oracle.kubernetes.operator.logging.MessageKeys;
22+
import oracle.kubernetes.operator.work.ContainerResolver;
23+
import oracle.kubernetes.operator.work.NextAction;
24+
import oracle.kubernetes.operator.work.Packet;
25+
import oracle.kubernetes.operator.work.Step;
26+
27+
public class DeleteIngressListStep extends Step {
28+
private static final LoggingFacade LOGGER = LoggingFactory.getLogger("Operator", "Operator");
29+
30+
private final Iterator<V1beta1Ingress> it;
31+
32+
public DeleteIngressListStep(Collection<V1beta1Ingress> c, Step next) {
33+
super(next);
34+
this.it = c.iterator();
35+
}
36+
37+
@Override
38+
public NextAction apply(Packet packet) {
39+
CallBuilderFactory factory = ContainerResolver.getInstance().getContainer().getSPI(CallBuilderFactory.class);
40+
41+
if (it.hasNext()) {
42+
V1beta1Ingress v1beta1Ingress = it.next();
43+
V1ObjectMeta meta = v1beta1Ingress.getMetadata();
44+
String ingressName = meta.getName();
45+
String namespace = meta.getNamespace();
46+
LOGGER.finer(MessageKeys.REMOVING_INGRESS, ingressName, namespace);
47+
Step delete = factory.create().deleteIngressAsync(ingressName, meta.getNamespace(),
48+
new V1DeleteOptions(), new ResponseStep<V1Status>(this) {
49+
@Override
50+
public NextAction onFailure(Packet packet, ApiException e, int statusCode,
51+
Map<String, List<String>> responseHeaders) {
52+
if (statusCode == CallBuilder.NOT_FOUND) {
53+
return onSuccess(packet, null, statusCode, responseHeaders);
54+
}
55+
return super.onFailure(packet, e, statusCode, responseHeaders);
56+
}
57+
58+
@Override
59+
public NextAction onSuccess(Packet packet, V1Status result, int statusCode,
60+
Map<String, List<String>> responseHeaders) {
61+
return doNext(packet);
62+
}
63+
});
64+
return doNext(delete, packet);
65+
}
66+
return doNext(packet);
67+
}
68+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// Copyright 2017, 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
3+
4+
package oracle.kubernetes.operator.steps;
5+
6+
import java.util.Collection;
7+
import java.util.Iterator;
8+
import java.util.List;
9+
import java.util.Map;
10+
11+
import io.kubernetes.client.ApiException;
12+
import io.kubernetes.client.models.V1ObjectMeta;
13+
import io.kubernetes.client.models.V1Service;
14+
import io.kubernetes.client.models.V1Status;
15+
import oracle.kubernetes.operator.helpers.CallBuilder;
16+
import oracle.kubernetes.operator.helpers.CallBuilderFactory;
17+
import oracle.kubernetes.operator.helpers.ResponseStep;
18+
import oracle.kubernetes.operator.work.ContainerResolver;
19+
import oracle.kubernetes.operator.work.NextAction;
20+
import oracle.kubernetes.operator.work.Packet;
21+
import oracle.kubernetes.operator.work.Step;
22+
23+
public class DeleteServiceListStep extends Step {
24+
private final Iterator<V1Service> it;
25+
26+
public DeleteServiceListStep(Collection<V1Service> c, Step next) {
27+
super(next);
28+
this.it = c.iterator();
29+
}
30+
31+
@Override
32+
public NextAction apply(Packet packet) {
33+
CallBuilderFactory factory = ContainerResolver.getInstance().getContainer().getSPI(CallBuilderFactory.class);
34+
35+
if (it.hasNext()) {
36+
V1Service service = it.next();
37+
V1ObjectMeta meta = service.getMetadata();
38+
Step delete = factory.create().deleteServiceAsync(meta.getName(), meta.getNamespace(),
39+
new ResponseStep<V1Status>(this) {
40+
@Override
41+
public NextAction onFailure(Packet packet, ApiException e, int statusCode,
42+
Map<String, List<String>> responseHeaders) {
43+
if (statusCode == CallBuilder.NOT_FOUND) {
44+
return onSuccess(packet, null, statusCode, responseHeaders);
45+
}
46+
return super.onFailure(packet, e, statusCode, responseHeaders);
47+
}
48+
49+
@Override
50+
public NextAction onSuccess(Packet packet, V1Status result, int statusCode,
51+
Map<String, List<String>> responseHeaders) {
52+
return doNext(packet);
53+
}
54+
});
55+
return doNext(delete, packet);
56+
}
57+
58+
return doNext(packet);
59+
}
60+
}

0 commit comments

Comments
 (0)