diff --git a/operator/src/main/java/oracle/kubernetes/operator/DomainStatusUpdater.java b/operator/src/main/java/oracle/kubernetes/operator/DomainStatusUpdater.java index b80b3e5fb3a..c9096c5700f 100644 --- a/operator/src/main/java/oracle/kubernetes/operator/DomainStatusUpdater.java +++ b/operator/src/main/java/oracle/kubernetes/operator/DomainStatusUpdater.java @@ -857,13 +857,23 @@ private Collection getServerStartupInfos() // when the domain start policy is ADMIN_ONLY, the admin server is considered to be an application server. private boolean isApplicationServer(String serverName) { - return isAdminOnlyDomain() || !isAdminServer(serverName); + return !isAdminServer(serverName); } private boolean isAdminOnlyDomain() { + return isAdminOnlyServerStartPolicy() + || isOnlyAdminServerRunningInDomain(); + } + + private boolean isAdminOnlyServerStartPolicy() { return getDomain().getSpec().getServerStartPolicy() == ServerStartPolicy.ADMIN_ONLY; } + private boolean isOnlyAdminServerRunningInDomain() { + return status.getServers().size() == 1 + && status.getServers().get(0).getServerName().equals(getInfo().getAdminServerName()); + } + private boolean isAdminServer(String serverName) { return status.getServers().stream() .filter(s -> s.getServerName().equals(serverName)) diff --git a/operator/src/test/java/oracle/kubernetes/operator/DomainStatusUpdateTestBase.java b/operator/src/test/java/oracle/kubernetes/operator/DomainStatusUpdateTestBase.java index 98eb95ebbfa..88ae65a9754 100644 --- a/operator/src/test/java/oracle/kubernetes/operator/DomainStatusUpdateTestBase.java +++ b/operator/src/test/java/oracle/kubernetes/operator/DomainStatusUpdateTestBase.java @@ -1736,6 +1736,16 @@ void whenServerStartupInfoIsNull_availableIsFalse() { hasItems(new ClusterCondition(ClusterConditionType.AVAILABLE).withStatus(FALSE))); } + @Test + void whenDomainOnlyHasAdminServer_availableIsTrue() { + configureDomain().configureAdminServer(); + defineScenario().build(); + + updateDomainStatus(); + + assertThat(getRecordedDomain(), hasCondition(AVAILABLE).withStatus(TRUE)); + } + private Collection getClusterConditions() { return testSupport.getResourceWithName(KubernetesTestSupport.CLUSTER, "cluster1") .getStatus().getConditions();