1- // Copyright (c) 2017, 2021 , Oracle and/or its affiliates.
1+ // Copyright (c) 2017, 2022 , Oracle and/or its affiliates.
22// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33
44package oracle .kubernetes .operator .steps ;
1515import java .util .stream .Collectors ;
1616import javax .annotation .Nonnull ;
1717
18+ import io .kubernetes .client .openapi .models .V1Pod ;
1819import oracle .kubernetes .operator .DomainStatusUpdater ;
1920import oracle .kubernetes .operator .MakeRightDomainOperation ;
2021import oracle .kubernetes .operator .ProcessingConstants ;
4142import static oracle .kubernetes .operator .DomainStatusUpdater .MANAGED_SERVERS_STARTING_PROGRESS_REASON ;
4243import static oracle .kubernetes .operator .DomainStatusUpdater .createProgressingStartedEventStep ;
4344import static oracle .kubernetes .operator .helpers .EventHelper .createEventStep ;
45+ import static oracle .kubernetes .operator .helpers .PodHelper .getPodServerName ;
4446
4547public class ManagedServersUpStep extends Step {
4648 static final String SERVERS_UP_MSG =
@@ -118,7 +120,7 @@ public NextAction apply(Packet packet) {
118120 LOGGER .fine (SERVERS_UP_MSG , factory .domain .getDomainUid (), getRunningServers (info ));
119121 }
120122
121- Optional .ofNullable (config ).ifPresent (wlsDomainConfig -> addServersToFactory (factory , wlsDomainConfig ));
123+ Optional .ofNullable (config ).ifPresent (wlsDomainConfig -> addServersToFactory (factory , wlsDomainConfig , info ));
122124
123125 info .setServerStartupInfo (factory .getStartupInfos ());
124126 info .setServerShutdownInfo (factory .getShutdownInfos ());
@@ -130,7 +132,8 @@ public NextAction apply(Packet packet) {
130132 packet );
131133 }
132134
133- private void addServersToFactory (@ Nonnull ServersUpStepFactory factory , @ Nonnull WlsDomainConfig wlsDomainConfig ) {
135+ private void addServersToFactory (@ Nonnull ServersUpStepFactory factory , @ Nonnull WlsDomainConfig wlsDomainConfig ,
136+ DomainPresenceInfo info ) {
134137 Set <String > clusteredServers = new HashSet <>();
135138
136139 List <ServerConfig > pendingServers = new ArrayList <>();
@@ -145,6 +148,15 @@ private void addServersToFactory(@Nonnull ServersUpStepFactory factory, @Nonnull
145148 for (ServerConfig serverConfig : pendingServers ) {
146149 factory .addServerIfNeeded (serverConfig .wlsServerConfig , serverConfig .wlsClusterConfig );
147150 }
151+
152+ info .getServerPods ().filter (pod -> !factory .getServers ().contains (getPodServerName (pod )))
153+ .filter (pod -> !getPodServerName (pod ).equals (wlsDomainConfig .getAdminServerName ()))
154+ .forEach (pod -> shutdownServersNotPresentInDomainConfig (factory , pod ));
155+ }
156+
157+ private void shutdownServersNotPresentInDomainConfig (ServersUpStepFactory factory , V1Pod pod ) {
158+ WlsServerConfig serverConfig = new WlsServerConfig (getPodServerName (pod ), pod .getMetadata ().getName (), 0 );
159+ factory .addShutdownInfo (new ServerShutdownInfo (serverConfig , pod .getMetadata ().getClusterName (), null , false ));
148160 }
149161
150162 private void addClusteredServersToFactory (
@@ -258,6 +270,10 @@ Collection<DomainPresenceInfo.ServerShutdownInfo> getShutdownInfos() {
258270 return shutdownInfos ;
259271 }
260272
273+ Collection <String > getServers () {
274+ return servers ;
275+ }
276+
261277 private void addStartupInfo (ServerStartupInfo startupInfo ) {
262278 if (startupInfos == null ) {
263279 startupInfos = new ArrayList <>();
0 commit comments