Skip to content

Commit a954166

Browse files
committed
Merge branch 'cherry-pick-864f0251' into 'release/4.0'
Backport to 4.0: Owls 107767 part 1: delete the admin external service when all channels are removed See merge request weblogic-cloud/weblogic-kubernetes-operator!4200
2 parents ab0aceb + 17e5a27 commit a954166

File tree

8 files changed

+299
-17
lines changed

8 files changed

+299
-17
lines changed

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,8 @@ private static String getReadinessStatus(CoreV1Event event) {
344344

345345
// pre-conditions: DomainPresenceInfo SPI
346346
// "principal"
347-
public static Step bringAdminServerUp(DomainPresenceInfo info, PodAwaiterStepFactory podAwaiterStepFactory) {
348-
return bringAdminServerUpSteps(info, podAwaiterStepFactory);
347+
public static Step bringAdminServerUp(PodAwaiterStepFactory podAwaiterStepFactory) {
348+
return bringAdminServerUpSteps(podAwaiterStepFactory);
349349
}
350350

351351
@Override
@@ -503,14 +503,11 @@ public void endScheduledDomainStatusUpdates(DomainPresenceInfo info) {
503503
}
504504
}
505505

506-
private static Step bringAdminServerUpSteps(DomainPresenceInfo info, PodAwaiterStepFactory podAwaiterStepFactory) {
506+
private static Step bringAdminServerUpSteps(PodAwaiterStepFactory podAwaiterStepFactory) {
507507
List<Step> steps = new ArrayList<>();
508508
steps.add(new BeforeAdminServiceStep(null));
509509
steps.add(PodHelper.createAdminPodStep(null));
510-
511-
if (info.getDomain().isExternalServiceConfigured()) {
512-
steps.add(ServiceHelper.createForExternalServiceStep(null));
513-
}
510+
steps.add(ServiceHelper.createForExternalServiceStep(null));
514511
steps.add(ServiceHelper.createForServerStep(null));
515512
steps.add(new WatchPodReadyAdminStep(podAwaiterStepFactory, null));
516513
return Step.chain(steps.toArray(new Step[0]));

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public interface LabelConstants {
2727
String TO_BE_ROLLED_LABEL = "weblogic.awaitingPodRoll";
2828
String DOMAIN_OBSERVED_GENERATION_LABEL = "weblogic.domainObservedGeneration";
2929
String CLUSTER_OBSERVED_GENERATION_LABEL = "weblogic.clusterObservedGeneration";
30+
String SERVICE_TYPE_LABEL = "serviceType";
3031

3132
static String forDomainUidSelector(String uid) {
3233
return String.format("%s=%s", DOMAINUID_LABEL, uid);
@@ -35,4 +36,8 @@ static String forDomainUidSelector(String uid) {
3536
static String getCreatedByOperatorSelector() {
3637
return String.format("%s=%s", CREATEDBYOPERATOR_LABEL, "true");
3738
}
39+
40+
static String getServiceTypeSelector(String type) {
41+
return String.format("%s=%s", SERVICE_TYPE_LABEL, type);
42+
}
3843
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ public V1Service getExternalService(String serverName) {
676676
return getSko(serverName).getExternalService().get();
677677
}
678678

679-
void setExternalService(String serverName, V1Service service) {
679+
public void setExternalService(String serverName, V1Service service) {
680680
getSko(serverName).getExternalService().set(service);
681681
}
682682

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

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import static oracle.kubernetes.operator.KubernetesConstants.HTTP_NOT_FOUND;
6262
import static oracle.kubernetes.operator.LabelConstants.forDomainUidSelector;
6363
import static oracle.kubernetes.operator.LabelConstants.getCreatedByOperatorSelector;
64+
import static oracle.kubernetes.operator.LabelConstants.getServiceTypeSelector;
6465
import static oracle.kubernetes.operator.helpers.KubernetesUtils.getDomainUidLabel;
6566
import static oracle.kubernetes.operator.helpers.OperatorServiceType.EXTERNAL;
6667

@@ -596,7 +597,7 @@ private Step deleteAndReplaceNodePortService() {
596597
.withLabelSelectors(forDomainUidSelector(info.getDomainUid()), getCreatedByOperatorSelector())
597598
.listServiceAsync(
598599
getNamespace(),
599-
new ActionResponseStep<V1ServiceList>() {
600+
new ActionResponseStep<>() {
600601
public Step createSuccessStep(V1ServiceList result, Step next) {
601602
Collection<V1Service> c = Optional.ofNullable(result).map(list -> list.getItems().stream()
602603
.filter(ServiceHelper::isNodePortType)
@@ -898,6 +899,16 @@ private static class ExternalServiceStepContext extends ServiceStepContext {
898899
adminServerName = (String) packet.get(ProcessingConstants.SERVER_NAME);
899900
}
900901

902+
@Override
903+
Step verifyService(Step next) {
904+
if (info.getDomain().isExternalServiceConfigured()) {
905+
return super.verifyService(next);
906+
} else {
907+
removeServiceFromRecord();
908+
return deleteExternalService(next);
909+
}
910+
}
911+
901912
@Override
902913
protected V1ObjectMeta createMetadata() {
903914
return super.createMetadata().putLabelsItem(LabelConstants.SERVERNAME_LABEL, adminServerName);
@@ -954,6 +965,24 @@ Map<String, String> getServiceAnnotations() {
954965
return getNullableAdminService().map(AdminService::getAnnotations).orElse(Collections.emptyMap());
955966
}
956967

968+
private Step deleteExternalService(Step next) {
969+
return Step.chain(getStep(), next);
970+
}
971+
972+
private Step getStep() {
973+
return new CallBuilder()
974+
.withLabelSelectors(forDomainUidSelector(info.getDomainUid()), getCreatedByOperatorSelector(),
975+
getServiceTypeSelector("EXTERNAL"))
976+
.listServiceAsync(
977+
info.getNamespace(),
978+
new ActionResponseStep<>() {
979+
public Step createSuccessStep(V1ServiceList result, Step next) {
980+
return new DeleteServiceListStep(result.getItems(), next);
981+
}
982+
});
983+
}
984+
985+
957986
@Override
958987
protected void logServiceCreated(String messageKey) {
959988
LOGGER.info(messageKey, getDomainUid());

operator/src/main/java/oracle/kubernetes/operator/makeright/MakeRightDomainOperationImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ private Step createDomainUpPlan(DomainPresenceInfo info) {
296296
ConfigMapHelper.createOrReplaceFluentdConfigMapStep(),
297297
domainIntrospectionSteps(),
298298
new DomainStatusStep(),
299-
DomainProcessorImpl.bringAdminServerUp(info, delegate.getPodAwaiterStepFactory(info.getNamespace())),
299+
DomainProcessorImpl.bringAdminServerUp(delegate.getPodAwaiterStepFactory(info.getNamespace())),
300300
managedServerStrategy);
301301

302302
Step introspectionAndDomainPresenceSteps = Step.chain(ConfigMapHelper.readExistingIntrospectorConfigMap(),

operator/src/test/java/oracle/kubernetes/operator/helpers/PodHelperTestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2882,7 +2882,7 @@ interface PodMutator {
28822882
void mutate(V1Pod pod);
28832883
}
28842884

2885-
protected static class PassthroughPodAwaiterStepFactory implements PodAwaiterStepFactory {
2885+
public static class PassthroughPodAwaiterStepFactory implements PodAwaiterStepFactory {
28862886
@Override
28872887
public Step waitForReady(V1Pod pod, Step next) {
28882888
return next;

0 commit comments

Comments
 (0)