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 .MakeRightDomainOperation ;
1920import oracle .kubernetes .operator .ProcessingConstants ;
2021import oracle .kubernetes .operator .helpers .DomainPresenceInfo ;
3536import oracle .kubernetes .weblogic .domain .model .ServerSpec ;
3637
3738import static java .util .Comparator .comparing ;
39+ import static oracle .kubernetes .operator .helpers .PodHelper .getPodServerName ;
3840
3941public class ManagedServersUpStep extends Step {
4042 static final String SERVERS_UP_MSG =
@@ -103,7 +105,7 @@ public NextAction apply(Packet packet) {
103105 LOGGER .fine (SERVERS_UP_MSG , factory .domain .getDomainUid (), getRunningServers (info ));
104106 }
105107
106- Optional .ofNullable (config ).ifPresent (wlsDomainConfig -> addServersToFactory (factory , wlsDomainConfig ));
108+ Optional .ofNullable (config ).ifPresent (wlsDomainConfig -> addServersToFactory (factory , wlsDomainConfig , info ));
107109
108110 info .setServerStartupInfo (factory .getStartupInfos ());
109111 info .setServerShutdownInfo (factory .getShutdownInfos ());
@@ -116,7 +118,8 @@ public NextAction apply(Packet packet) {
116118 packet );
117119 }
118120
119- private void addServersToFactory (@ Nonnull ServersUpStepFactory factory , @ Nonnull WlsDomainConfig wlsDomainConfig ) {
121+ private void addServersToFactory (@ Nonnull ServersUpStepFactory factory , @ Nonnull WlsDomainConfig wlsDomainConfig ,
122+ DomainPresenceInfo info ) {
120123 Set <String > clusteredServers = new HashSet <>();
121124
122125 List <ServerConfig > pendingServers = new ArrayList <>();
@@ -131,6 +134,15 @@ private void addServersToFactory(@Nonnull ServersUpStepFactory factory, @Nonnull
131134 for (ServerConfig serverConfig : pendingServers ) {
132135 factory .addServerIfNeeded (serverConfig .wlsServerConfig , serverConfig .wlsClusterConfig );
133136 }
137+
138+ info .getServerPods ().filter (pod -> !factory .getServers ().contains (getPodServerName (pod )))
139+ .filter (pod -> !getPodServerName (pod ).equals (wlsDomainConfig .getAdminServerName ()))
140+ .forEach (pod -> shutdownServersNotPresentInDomainConfig (factory , pod ));
141+ }
142+
143+ private void shutdownServersNotPresentInDomainConfig (ServersUpStepFactory factory , V1Pod pod ) {
144+ WlsServerConfig serverConfig = new WlsServerConfig (getPodServerName (pod ), PodHelper .getPodName (pod ), 0 );
145+ factory .addShutdownInfo (new ServerShutdownInfo (serverConfig , pod .getMetadata ().getClusterName (), null , false ));
134146 }
135147
136148 private void addClusteredServersToFactory (
@@ -242,6 +254,10 @@ Collection<DomainPresenceInfo.ServerShutdownInfo> getShutdownInfos() {
242254 return shutdownInfos ;
243255 }
244256
257+ Collection <String > getServers () {
258+ return servers ;
259+ }
260+
245261 private void addStartupInfo (ServerStartupInfo startupInfo ) {
246262 if (startupInfos == null ) {
247263 startupInfos = new ArrayList <>();
0 commit comments