1- // Copyright (c) 2020, 2022 , Oracle and/or its affiliates.
1+ // Copyright (c) 2020, 2023 , 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 ;
55
6+ import java .util .ArrayList ;
67import java .util .Arrays ;
78import java .util .Collection ;
89import java .util .Collections ;
@@ -271,7 +272,7 @@ static class NamespaceListAfterStep extends Step {
271272
272273 @ Override
273274 public NextAction apply (Packet packet ) {
274- NamespaceValidationContext validationContext = new NamespaceValidationContext (packet );
275+ NamespaceValidationContext validationContext = new NamespaceValidationContext (packet , domainNamespaces );
275276 getNonNullConfiguredDomainNamespaces ().forEach (validationContext ::validateConfiguredNamespace );
276277 List <StepAndPacket > nsStopEventSteps = getCreateNSStopEventSteps (packet , validationContext );
277278 stopRemovedNamespaces (validationContext );
@@ -280,18 +281,23 @@ public NextAction apply(Packet packet) {
280281
281282 private List <StepAndPacket > getCreateNSStopEventSteps (Packet packet , NamespaceValidationContext validationContext ) {
282283 return domainNamespaces .getNamespaces ().stream ()
283- .filter (validationContext ::isNoLongerActiveDomainNamespace )
284+ .filter (validationContext ::isNotManaged )
284285 .map (n -> createNSStopEventDetails (packet , n )).collect (Collectors .toList ());
285286 }
286287
287288 private StepAndPacket createNSStopEventDetails (Packet packet , String namespace ) {
288289 LOGGER .info (MessageKeys .END_MANAGING_NAMESPACE , namespace );
289- return new StepAndPacket (
290- Step .chain (
291- createEventStep (new EventData (NAMESPACE_WATCHING_STOPPED ).resourceName (namespace ).namespace (namespace )),
292- createEventStep (new EventData (STOP_MANAGING_NAMESPACE ).resourceName (namespace )
293- .namespace (getOperatorNamespace ()))),
294- packet .copy ());
290+ return new StepAndPacket (getSteps (namespace ), packet .copy ());
291+ }
292+
293+ private Step getSteps (String ns ) {
294+ List <Step > steps = new ArrayList <>();
295+ if (!domainNamespaces .isStopping (ns ).get ()) {
296+ steps .add (createEventStep (new EventData (NAMESPACE_WATCHING_STOPPED ).resourceName (ns ).namespace (ns )));
297+ }
298+ steps .add (createEventStep (
299+ new EventData (STOP_MANAGING_NAMESPACE ).resourceName (ns ).namespace (getOperatorNamespace ())));
300+ return Step .chain (steps .toArray (new Step [0 ]));
295301 }
296302
297303 private Step createNamespaceWatchStopEventsStep (List <StepAndPacket > nsStopEventDetails ) {
@@ -333,9 +339,15 @@ private void stopRemovedNamespaces(NamespaceValidationContext validationContext)
333339 private static class NamespaceValidationContext {
334340
335341 final Collection <String > allDomainNamespaces ;
342+ final DomainNamespaces domainNamespaces ;
336343
337- NamespaceValidationContext (Packet packet ) {
344+ NamespaceValidationContext (Packet packet , DomainNamespaces domainNamespaces ) {
338345 allDomainNamespaces = Optional .ofNullable (getFoundDomainNamespaces (packet )).orElse (Collections .emptyList ());
346+ this .domainNamespaces = domainNamespaces ;
347+ }
348+
349+ private boolean isNotManaged (String ns ) {
350+ return !allDomainNamespaces .contains (ns ) || domainNamespaces .isStopping (ns ).get ();
339351 }
340352
341353 private boolean isNoLongerActiveDomainNamespace (String ns ) {
0 commit comments