1
- // Copyright (c) 2020, 2022 , Oracle and/or its affiliates.
1
+ // Copyright (c) 2020, 2023 , Oracle and/or its affiliates.
2
2
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
3
3
4
4
package oracle .kubernetes .operator ;
5
5
6
+ import java .util .ArrayList ;
6
7
import java .util .Arrays ;
7
8
import java .util .Collection ;
8
9
import java .util .Collections ;
@@ -271,7 +272,7 @@ static class NamespaceListAfterStep extends Step {
271
272
272
273
@ Override
273
274
public NextAction apply (Packet packet ) {
274
- NamespaceValidationContext validationContext = new NamespaceValidationContext (packet );
275
+ NamespaceValidationContext validationContext = new NamespaceValidationContext (packet , domainNamespaces );
275
276
getNonNullConfiguredDomainNamespaces ().forEach (validationContext ::validateConfiguredNamespace );
276
277
List <StepAndPacket > nsStopEventSteps = getCreateNSStopEventSteps (packet , validationContext );
277
278
stopRemovedNamespaces (validationContext );
@@ -280,18 +281,23 @@ public NextAction apply(Packet packet) {
280
281
281
282
private List <StepAndPacket > getCreateNSStopEventSteps (Packet packet , NamespaceValidationContext validationContext ) {
282
283
return domainNamespaces .getNamespaces ().stream ()
283
- .filter (validationContext ::isNoLongerActiveDomainNamespace )
284
+ .filter (validationContext ::isNotManaged )
284
285
.map (n -> createNSStopEventDetails (packet , n )).collect (Collectors .toList ());
285
286
}
286
287
287
288
private StepAndPacket createNSStopEventDetails (Packet packet , String namespace ) {
288
289
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 ]));
295
301
}
296
302
297
303
private Step createNamespaceWatchStopEventsStep (List <StepAndPacket > nsStopEventDetails ) {
@@ -333,9 +339,15 @@ private void stopRemovedNamespaces(NamespaceValidationContext validationContext)
333
339
private static class NamespaceValidationContext {
334
340
335
341
final Collection <String > allDomainNamespaces ;
342
+ final DomainNamespaces domainNamespaces ;
336
343
337
- NamespaceValidationContext (Packet packet ) {
344
+ NamespaceValidationContext (Packet packet , DomainNamespaces domainNamespaces ) {
338
345
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 ();
339
351
}
340
352
341
353
private boolean isNoLongerActiveDomainNamespace (String ns ) {
0 commit comments