diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AnnotationControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AnnotationControllerConfiguration.java index 03f97982be..354e2b49e4 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AnnotationControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AnnotationControllerConfiguration.java @@ -25,6 +25,8 @@ import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter; import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilters; +import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES; + @SuppressWarnings("rawtypes") public class AnnotationControllerConfiguration<R extends HasMetadata> implements io.javaoperatorsdk.operator.api.config.ControllerConfiguration<R> { @@ -73,7 +75,7 @@ public boolean isGenerationAware() { @Override public Set<String> getNamespaces() { return Set.of(valueOrDefault(annotation, ControllerConfiguration::namespaces, - new String[] {Constants.WATCH_ALL_NAMESPACES})); + DEFAULT_NAMESPACES.toArray(String[]::new))); } @Override diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java index f045a4a2e3..70a901d68e 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java @@ -14,6 +14,9 @@ import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig; import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter; +import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES; +import static io.javaoperatorsdk.operator.api.reconciler.Constants.WATCH_CURRENT_NAMESPACE_SET; + @SuppressWarnings({"rawtypes", "unused"}) public class ControllerConfigurationOverrider<R extends HasMetadata> { @@ -53,7 +56,7 @@ public ControllerConfigurationOverrider<R> withGenerationAware(boolean generatio } public ControllerConfigurationOverrider<R> watchingOnlyCurrentNamespace() { - this.namespaces = ResourceConfiguration.CURRENT_NAMESPACE_ONLY; + this.namespaces = WATCH_CURRENT_NAMESPACE_SET; return this; } @@ -65,7 +68,7 @@ public ControllerConfigurationOverrider<R> addingNamespaces(String... namespaces public ControllerConfigurationOverrider<R> removingNamespaces(String... namespaces) { List.of(namespaces).forEach(this.namespaces::remove); if (this.namespaces.isEmpty()) { - this.namespaces = ResourceConfiguration.DEFAULT_NAMESPACES; + this.namespaces = DEFAULT_NAMESPACES; } return this; } @@ -77,7 +80,7 @@ public ControllerConfigurationOverrider<R> settingNamespace(String namespace) { } public ControllerConfigurationOverrider<R> watchingAllNamespaces() { - this.namespaces = ResourceConfiguration.DEFAULT_NAMESPACES; + this.namespaces = DEFAULT_NAMESPACES; return this; } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/DefaultResourceConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/DefaultResourceConfiguration.java index 7ee116ac60..6a3737ae48 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/DefaultResourceConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/DefaultResourceConfiguration.java @@ -4,6 +4,8 @@ import io.fabric8.kubernetes.api.model.HasMetadata; +import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES; + public class DefaultResourceConfiguration<R extends HasMetadata> implements ResourceConfiguration<R> { @@ -14,7 +16,7 @@ public class DefaultResourceConfiguration<R extends HasMetadata> public DefaultResourceConfiguration(String labelSelector, Class<R> resourceClass, String... namespaces) { this(labelSelector, resourceClass, - namespaces == null || namespaces.length == 0 ? ResourceConfiguration.DEFAULT_NAMESPACES + namespaces == null || namespaces.length == 0 ? DEFAULT_NAMESPACES : Set.of(namespaces)); } @@ -23,7 +25,7 @@ public DefaultResourceConfiguration(String labelSelector, Class<R> resourceClass this.labelSelector = labelSelector; this.resourceClass = resourceClass; this.namespaces = - namespaces == null || namespaces.isEmpty() ? ResourceConfiguration.DEFAULT_NAMESPACES + namespaces == null || namespaces.isEmpty() ? DEFAULT_NAMESPACES : namespaces; } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/NamespaceChangeable.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/NamespaceChangeable.java index d03f59a8d0..5630604cd9 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/NamespaceChangeable.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/NamespaceChangeable.java @@ -2,6 +2,8 @@ import java.util.Set; +import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES; + public interface NamespaceChangeable { /** @@ -16,7 +18,7 @@ public interface NamespaceChangeable { default void changeNamespaces(String... namespaces) { changeNamespaces( - namespaces != null ? Set.of(namespaces) : ResourceConfiguration.DEFAULT_NAMESPACES); + namespaces != null ? Set.of(namespaces) : DEFAULT_NAMESPACES); } default boolean allowsNamespaceChanges() { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResourceConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResourceConfiguration.java index 833063af93..8026946bb6 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResourceConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResourceConfiguration.java @@ -8,10 +8,10 @@ import io.javaoperatorsdk.operator.ReconcilerUtils; import io.javaoperatorsdk.operator.api.reconciler.Constants; -public interface ResourceConfiguration<R extends HasMetadata> { +import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES; +import static io.javaoperatorsdk.operator.api.reconciler.Constants.WATCH_CURRENT_NAMESPACE_SET; - Set<String> DEFAULT_NAMESPACES = Collections.singleton(Constants.WATCH_ALL_NAMESPACES); - Set<String> CURRENT_NAMESPACE_ONLY = Collections.singleton(Constants.WATCH_CURRENT_NAMESPACE); +public interface ResourceConfiguration<R extends HasMetadata> { default String getResourceTypeName() { return ReconcilerUtils.getResourceTypeName(getResourceClass()); @@ -53,7 +53,7 @@ default boolean watchCurrentNamespace() { static boolean currentNamespaceWatched(Set<String> namespaces) { failIfNotValid(namespaces); - return CURRENT_NAMESPACE_ONLY.equals(namespaces); + return WATCH_CURRENT_NAMESPACE_SET.equals(namespaces); } static void failIfNotValid(Set<String> namespaces) { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java index b3388f969a..b6c7fcfb89 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java @@ -10,6 +10,8 @@ import io.javaoperatorsdk.operator.processing.event.source.SecondaryToPrimaryMapper; import io.javaoperatorsdk.operator.processing.event.source.informer.Mappers; +import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES; + public interface InformerConfiguration<R extends HasMetadata> extends ResourceConfiguration<R> { @@ -71,7 +73,7 @@ public InformerConfigurationBuilder<R> withSecondaryToPrimaryMapper( public InformerConfigurationBuilder<R> withNamespaces(String... namespaces) { return withNamespaces( - namespaces != null ? Set.of(namespaces) : ResourceConfiguration.DEFAULT_NAMESPACES); + namespaces != null ? Set.of(namespaces) : DEFAULT_NAMESPACES); } public InformerConfigurationBuilder<R> withNamespaces(Set<String> namespaces) { @@ -90,7 +92,7 @@ public InformerConfigurationBuilder<R> withNamespaces(Set<String> namespaces) { */ public InformerConfigurationBuilder<R> withNamespaces(Set<String> namespaces, boolean followChanges) { - this.namespaces = namespaces != null ? namespaces : ResourceConfiguration.DEFAULT_NAMESPACES; + this.namespaces = namespaces != null ? namespaces : DEFAULT_NAMESPACES; this.inheritControllerNamespacesOnChange = true; return this; } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Constants.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Constants.java index 7d7d44ec32..da9c117992 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Constants.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Constants.java @@ -1,7 +1,15 @@ package io.javaoperatorsdk.operator.api.reconciler; +import java.util.Collections; +import java.util.Set; + public final class Constants { + public static final Set<String> DEFAULT_NAMESPACES = + Collections.singleton(Constants.WATCH_ALL_NAMESPACES); + public static final Set<String> WATCH_CURRENT_NAMESPACE_SET = + Collections.singleton(Constants.WATCH_CURRENT_NAMESPACE); + public static final String NO_VALUE_SET = ""; public static final String WATCH_CURRENT_NAMESPACE = "JOSDK_WATCH_CURRENT"; public static final String WATCH_ALL_NAMESPACES = "JOSDK_ALL_NAMESPACES"; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/MockControllerConfiguration.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/MockControllerConfiguration.java index a58e3b5b73..caa02a7511 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/MockControllerConfiguration.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/MockControllerConfiguration.java @@ -2,6 +2,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; +import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -11,7 +12,7 @@ public static <R extends HasMetadata> ControllerConfiguration<R> forResource( Class<R> resourceType) { final ControllerConfiguration configuration = mock(ControllerConfiguration.class); when(configuration.getResourceClass()).thenReturn(resourceType); - when(configuration.getNamespaces()).thenReturn(ResourceConfiguration.DEFAULT_NAMESPACES); + when(configuration.getNamespaces()).thenReturn(DEFAULT_NAMESPACES); when(configuration.getEffectiveNamespaces()).thenCallRealMethod(); return configuration; } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java index 8563fe4d01..b7e379ccf6 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java @@ -14,13 +14,13 @@ import io.fabric8.kubernetes.client.dsl.MixedOperation; import io.fabric8.kubernetes.client.informers.SharedIndexInformer; import io.fabric8.kubernetes.client.informers.cache.Indexer; -import io.javaoperatorsdk.operator.api.config.ResourceConfiguration; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.processing.event.EventHandler; import io.javaoperatorsdk.operator.processing.event.ResourceID; import io.javaoperatorsdk.operator.processing.event.source.SecondaryToPrimaryMapper; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; +import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; @@ -55,7 +55,7 @@ void setup() { when(informer.getIndexer()).thenReturn(mock(Indexer.class)); when(informerConfiguration.getEffectiveNamespaces()) - .thenReturn(ResourceConfiguration.DEFAULT_NAMESPACES); + .thenReturn(DEFAULT_NAMESPACES); when(informerConfiguration.getSecondaryToPrimaryMapper()) .thenReturn(mock(SecondaryToPrimaryMapper.class));