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 88a28480bd..328d912109 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 @@ -58,6 +58,7 @@ private ControllerConfigurationOverrider(ControllerConfiguration<R> original) { this.name = original.getName(); this.fieldManager = original.fieldManager(); this.informerListLimit = original.getInformerListLimit().orElse(null); + this.itemStore = original.getItemStore().orElse(null); } public ControllerConfigurationOverrider<R> withFinalizer(String finalizer) { diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverriderTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverriderTest.java index eae4c22ac6..1c86886d89 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverriderTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverriderTest.java @@ -7,6 +7,9 @@ import org.junit.jupiter.api.Test; import io.fabric8.kubernetes.api.model.ConfigMap; +import io.fabric8.kubernetes.api.model.HasMetadata; +import io.fabric8.kubernetes.client.informers.cache.BasicItemStore; +import io.fabric8.kubernetes.client.informers.cache.Cache; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceConfigurationResolver; import io.javaoperatorsdk.operator.api.reconciler.Constants; import io.javaoperatorsdk.operator.api.reconciler.Context; @@ -130,7 +133,15 @@ private io.javaoperatorsdk.operator.api.config.ControllerConfiguration<?> create return configurationService.configFor(reconciler); } - @ControllerConfiguration(namespaces = "foo") + private static class MyItemStore<T extends HasMetadata> extends BasicItemStore<T> { + + public MyItemStore() { + super(Cache::metaNamespaceKeyFunc); + } + + } + + @ControllerConfiguration(namespaces = "foo", itemStore = MyItemStore.class) private static class WatchCurrentReconciler implements Reconciler<ConfigMap> { @Override @@ -187,6 +198,16 @@ void overridingNamespacesShouldWork() { assertFalse(configuration.watchCurrentNamespace()); } + @Test + void itemStorePreserved() { + var configuration = createConfiguration(new WatchCurrentReconciler()); + + configuration = ControllerConfigurationOverrider.override(configuration) + .build(); + + assertNotNull(configuration.getItemStore().orElse(null)); + } + @Test void configuredDependentShouldNotChangeOnParentOverrideEvenWhenInitialConfigIsSame() { var configuration = createConfiguration(new OverriddenNSOnDepReconciler());