diff --git a/bootstrapper-maven-plugin/src/main/resources/templates/Reconciler.java b/bootstrapper-maven-plugin/src/main/resources/templates/Reconciler.java index 6d03196fe9..f7583be4ee 100644 --- a/bootstrapper-maven-plugin/src/main/resources/templates/Reconciler.java +++ b/bootstrapper-maven-plugin/src/main/resources/templates/Reconciler.java @@ -1,24 +1,15 @@ package {{groupId}}; -import io.fabric8.kubernetes.api.model.ConfigMap; -import io.fabric8.kubernetes.api.model.ConfigMapBuilder; -import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; -import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.api.reconciler.Workflow; -import io.javaoperatorsdk.operator.processing.event.source.EventSource; -import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; import java.util.Map; import java.util.Optional; @Workflow(dependents = {@Dependent(type = ConfigMapDependentResource.class)}) -@ControllerConfiguration public class {{artifactClassId}}Reconciler implements Reconciler<{{artifactClassId}}CustomResource> { public UpdateControl<{{artifactClassId}}CustomResource> reconcile({{artifactClassId}}CustomResource primary, diff --git a/caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java b/caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java index cc59738e1c..9d912986e1 100644 --- a/caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java +++ b/caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java @@ -14,7 +14,7 @@ import io.fabric8.kubernetes.client.CustomResource; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.cache.BoundedItemStore; @@ -77,12 +77,14 @@ public List> prepareEventSources( boundedItemStore(new KubernetesClientBuilder().build(), ConfigMap.class, Duration.ofMinutes(1), 1); // setting max size for testing purposes - var es = new InformerEventSource<>(InformerConfiguration.from(ConfigMap.class, primaryClass()) - .withInformerConfiguration(c -> c.withItemStore(boundedItemStore)) - .withSecondaryToPrimaryMapper( - Mappers.fromOwnerReferences(context.getPrimaryResourceClass(), - this instanceof BoundedCacheClusterScopeTestReconciler)) - .build(), context); + var es = new InformerEventSource<>( + InformerEventSourceConfiguration.from(ConfigMap.class, primaryClass()) + .withInformerConfiguration(c -> c.withItemStore(boundedItemStore)) + .withSecondaryToPrimaryMapper( + Mappers.fromOwnerReferences(context.getPrimaryResourceClass(), + this instanceof BoundedCacheClusterScopeTestReconciler)) + .build(), + context); return List.of(es); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java index cb685cffb9..20beef7f90 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java @@ -17,13 +17,13 @@ import io.javaoperatorsdk.operator.api.config.Utils.Configurator; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceConfigurationResolver; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.config.workflow.WorkflowSpec; import io.javaoperatorsdk.operator.api.reconciler.Constants; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.Workflow; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition; import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter; import io.javaoperatorsdk.operator.processing.retry.Retry; @@ -275,8 +275,8 @@ private

ResolvedControllerConfiguration

controllerCon fieldManager.equals(CONTROLLER_NAME_AS_FIELD_MANAGER) ? name : fieldManager; - InformerConfigHolder

informerConfig = InformerConfigHolder.builder(resourceClass) - .initFromAnnotation(annotation != null ? annotation.informerConfig() : null, context) + InformerConfiguration

informerConfig = InformerConfiguration.builder(resourceClass) + .initFromAnnotation(annotation != null ? annotation.informer() : null, context) .buildForController(); return new ResolvedControllerConfiguration

( 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 c4d28b7829..423867107a 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 @@ -10,7 +10,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.client.informers.cache.ItemStore; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter; import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter; import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter; @@ -30,12 +30,12 @@ public class ControllerConfigurationOverrider { private String fieldManager; private Duration reconciliationMaxInterval; private Map configurations; - private final InformerConfigHolder.Builder config; + private final InformerConfiguration.Builder config; private ControllerConfigurationOverrider(ControllerConfiguration original) { this.finalizer = original.getFinalizerName(); this.generationAware = original.isGenerationAware(); - this.config = InformerConfigHolder.builder(original.getResourceClass()) + this.config = InformerConfiguration.builder(original.getResourceClass()) .withName(name) .withNamespaces(original.getNamespaces()) .withLabelSelector(original.getLabelSelector()) 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 5bd3267e12..c0d725f746 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,17 +4,17 @@ import io.fabric8.kubernetes.api.model.GenericKubernetesResource; import io.fabric8.kubernetes.api.model.HasMetadata; import io.javaoperatorsdk.operator.ReconcilerUtils; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; public class DefaultResourceConfiguration implements ResourceConfiguration { private final Class resourceClass; private final String resourceTypeName; - private final InformerConfigHolder informerConfig; + private final InformerConfiguration informerConfig; protected DefaultResourceConfiguration(Class resourceClass, - InformerConfigHolder informerConfig) { + InformerConfiguration informerConfig) { this.resourceClass = resourceClass; this.resourceTypeName = resourceClass.isAssignableFrom(GenericKubernetesResource.class) // in general this is irrelevant now for secondary resources it is used just by controller @@ -35,7 +35,7 @@ public Class getResourceClass() { } @Override - public InformerConfigHolder getInformerConfig() { + public InformerConfiguration getInformerConfig() { return informerConfig; } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java index 53d086d3b3..9bb7efb5cf 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java @@ -8,9 +8,9 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.config.workflow.WorkflowSpec; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter; import io.javaoperatorsdk.operator.processing.retry.Retry; @@ -49,7 +49,7 @@ public ResolvedControllerConfiguration(Class

resourceClass, String name, Map configurations, String fieldManager, ConfigurationService configurationService, - InformerConfigHolder

informerConfig, + InformerConfiguration

informerConfig, WorkflowSpec workflowSpec) { this(resourceClass, name, generationAware, associatedReconcilerClassName, retry, rateLimiter, maxReconciliationInterval, finalizer, configurations, fieldManager, @@ -62,7 +62,7 @@ protected ResolvedControllerConfiguration(Class

resourceClass, String name, RateLimiter rateLimiter, Duration maxReconciliationInterval, String finalizer, Map configurations, String fieldManager, - ConfigurationService configurationService, InformerConfigHolder

informerConfig) { + ConfigurationService configurationService, InformerConfiguration

informerConfig) { super(resourceClass, informerConfig); this.configurationService = configurationService; this.name = ControllerConfiguration.ensureValidName(name, associatedReconcilerClassName); @@ -81,7 +81,7 @@ protected ResolvedControllerConfiguration(Class

resourceClass, String name, Class reconcilerClas, ConfigurationService configurationService) { this(resourceClass, name, false, getAssociatedReconcilerClassName(reconcilerClas), null, null, null, null, null, null, configurationService, - InformerConfigHolder.builder(resourceClass).buildForController()); + InformerConfiguration.builder(resourceClass).buildForController()); } public static Duration getMaxReconciliationInterval(long interval, TimeUnit timeUnit) { 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 1e6699f9d9..cac44c93db 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 @@ -10,8 +10,8 @@ import io.fabric8.kubernetes.client.informers.cache.ItemStore; import io.javaoperatorsdk.operator.OperatorException; import io.javaoperatorsdk.operator.ReconcilerUtils; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Constants; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; import io.javaoperatorsdk.operator.processing.event.source.cache.BoundedItemStore; import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter; import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter; @@ -26,7 +26,7 @@ default String getResourceTypeName() { return ReconcilerUtils.getResourceTypeName(getResourceClass()); } - InformerConfigHolder getInformerConfig(); + InformerConfiguration getInformerConfig(); default Optional> onAddFilter() { return Optional.ofNullable(getInformerConfig().getOnAddFilter()); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/InformerConfig.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/Informer.java similarity index 96% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/InformerConfig.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/Informer.java index 29db90c253..363200bea5 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/InformerConfig.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/Informer.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.processing.dependent.kubernetes; +package io.javaoperatorsdk.operator.api.config.informer; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -13,13 +13,13 @@ import io.javaoperatorsdk.operator.processing.event.source.filter.OnDeleteFilter; import io.javaoperatorsdk.operator.processing.event.source.filter.OnUpdateFilter; -import static io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration.DEFAULT_FOLLOW_CONTROLLER_NAMESPACES_ON_CHANGE; +import static io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration.DEFAULT_FOLLOW_CONTROLLER_NAMESPACES_ON_CHANGE; import static io.javaoperatorsdk.operator.api.reconciler.Constants.NO_LONG_VALUE_SET; import static io.javaoperatorsdk.operator.api.reconciler.Constants.NO_VALUE_SET; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) -public @interface InformerConfig { +public @interface Informer { String name() default NO_VALUE_SET; 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 2376765ae4..0cb6892ebe 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 @@ -1,217 +1,280 @@ package io.javaoperatorsdk.operator.api.config.informer; -import java.util.Objects; -import java.util.Optional; import java.util.Set; -import java.util.function.Consumer; -import io.fabric8.kubernetes.api.model.GenericKubernetesResource; import io.fabric8.kubernetes.api.model.HasMetadata; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.config.DefaultResourceConfiguration; +import io.fabric8.kubernetes.client.informers.cache.ItemStore; import io.javaoperatorsdk.operator.api.config.ResourceConfiguration; import io.javaoperatorsdk.operator.api.config.Utils; -import io.javaoperatorsdk.operator.processing.GroupVersionKind; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; -import io.javaoperatorsdk.operator.processing.event.source.PrimaryToSecondaryMapper; -import io.javaoperatorsdk.operator.processing.event.source.SecondaryToPrimaryMapper; +import io.javaoperatorsdk.operator.api.reconciler.Constants; +import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter; +import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter; import io.javaoperatorsdk.operator.processing.event.source.filter.OnDeleteFilter; -import io.javaoperatorsdk.operator.processing.event.source.informer.Mappers; +import io.javaoperatorsdk.operator.processing.event.source.filter.OnUpdateFilter; import static io.javaoperatorsdk.operator.api.reconciler.Constants.*; -public interface InformerConfiguration - extends ResourceConfiguration { - boolean DEFAULT_FOLLOW_CONTROLLER_NAMESPACES_ON_CHANGE = true; +@SuppressWarnings("unused") +public class InformerConfiguration { + private final Builder builder = new Builder(); + private String name; + private Set namespaces; + private Boolean followControllerNamespacesOnChange; + private String labelSelector; + private OnAddFilter onAddFilter; + private OnUpdateFilter onUpdateFilter; + private OnDeleteFilter onDeleteFilter; + private GenericFilter genericFilter; + private ItemStore itemStore; + private Long informerListLimit; + + public InformerConfiguration(String name, Set namespaces, + boolean followControllerNamespacesOnChange, + String labelSelector, OnAddFilter onAddFilter, + OnUpdateFilter onUpdateFilter, OnDeleteFilter onDeleteFilter, + GenericFilter genericFilter, ItemStore itemStore, Long informerListLimit) { + this.name = name; + this.namespaces = namespaces; + this.followControllerNamespacesOnChange = followControllerNamespacesOnChange; + this.labelSelector = labelSelector; + this.onAddFilter = onAddFilter; + this.onUpdateFilter = onUpdateFilter; + this.onDeleteFilter = onDeleteFilter; + this.genericFilter = genericFilter; + this.itemStore = itemStore; + this.informerListLimit = informerListLimit; + } + + private InformerConfiguration() {} - static boolean inheritsNamespacesFromController(Set namespaces) { - return SAME_AS_CONTROLLER_NAMESPACES_SET.equals(namespaces); + @SuppressWarnings({"rawtypes", "unchecked"}) + public static InformerConfiguration.Builder builder() { + return new InformerConfiguration().builder; } - static InformerConfigurationBuilder from( - Class resourceClass, Class primaryResourceClass) { - return new InformerConfigurationBuilder<>(resourceClass, primaryResourceClass); + @SuppressWarnings({"rawtypes", "unchecked"}) + public static InformerConfiguration.Builder builder( + Class resourceClass) { + return new InformerConfiguration().builder; } - static InformerConfigurationBuilder from( - GroupVersionKind groupVersionKind, Class primaryResourceClass) { - return new InformerConfigurationBuilder<>(groupVersionKind, primaryResourceClass); + @SuppressWarnings({"rawtypes", "unchecked"}) + public static InformerConfiguration.Builder builder( + InformerConfiguration original) { + return new InformerConfiguration(original.name, original.namespaces, + original.followControllerNamespacesOnChange, original.labelSelector, original.onAddFilter, + original.onUpdateFilter, original.onDeleteFilter, original.genericFilter, + original.itemStore, original.informerListLimit).builder; } - /** - * Used in case the watched namespaces are changed dynamically, thus when operator is running (See - * {@link io.javaoperatorsdk.operator.RegisteredController}). If true, changing the target - * namespaces of a controller would result to change target namespaces for the - * InformerEventSource. - * - * @return if namespace changes should be followed - */ - default boolean followControllerNamespaceChanges() { - return getInformerConfig().isFollowControllerNamespacesOnChange(); + public String getName() { + return name; } - /** - * Returns the configured {@link SecondaryToPrimaryMapper} which will allow JOSDK to identify - * which secondary resources are associated with a given primary resource in cases where there is - * no explicit reference to the primary resource (e.g. using owner references) in the associated - * secondary resources. - * - * @return the configured {@link SecondaryToPrimaryMapper} - * @see SecondaryToPrimaryMapper for more explanations on when using such a mapper is useful / - * needed - */ - SecondaryToPrimaryMapper getSecondaryToPrimaryMapper(); - - default Optional> onDeleteFilter() { - return Optional.ofNullable(getInformerConfig().getOnDeleteFilter()); + public Set getNamespaces() { + return namespaces; } -

PrimaryToSecondaryMapper

getPrimaryToSecondaryMapper(); + public boolean isFollowControllerNamespacesOnChange() { + return followControllerNamespacesOnChange; + } - Optional getGroupVersionKind(); + public String getLabelSelector() { + return labelSelector; + } - default String name() { - return getInformerConfig().getName(); + public OnAddFilter getOnAddFilter() { + return onAddFilter; } - @SuppressWarnings("unchecked") - @Override - default Class getResourceClass() { - return (Class) Utils.getFirstTypeArgumentFromSuperClassOrInterface(getClass(), - InformerConfiguration.class); + public OnUpdateFilter getOnUpdateFilter() { + return onUpdateFilter; } - class DefaultInformerConfiguration extends - DefaultResourceConfiguration implements InformerConfiguration { - private final PrimaryToSecondaryMapper primaryToSecondaryMapper; - private final SecondaryToPrimaryMapper secondaryToPrimaryMapper; - private final GroupVersionKind groupVersionKind; + public OnDeleteFilter getOnDeleteFilter() { + return onDeleteFilter; + } - protected DefaultInformerConfiguration( - Class resourceClass, - GroupVersionKind groupVersionKind, - PrimaryToSecondaryMapper primaryToSecondaryMapper, - SecondaryToPrimaryMapper secondaryToPrimaryMapper, - InformerConfigHolder informerConfig) { - super(resourceClass, informerConfig); - this.groupVersionKind = groupVersionKind; - this.primaryToSecondaryMapper = primaryToSecondaryMapper; - this.secondaryToPrimaryMapper = secondaryToPrimaryMapper; - } + public GenericFilter getGenericFilter() { + return genericFilter; + } - @Override - public SecondaryToPrimaryMapper getSecondaryToPrimaryMapper() { - return secondaryToPrimaryMapper; - } + public ItemStore getItemStore() { + return itemStore; + } - @Override - public Optional> onDeleteFilter() { - return Optional.ofNullable(getInformerConfig().getOnDeleteFilter()); - } + public Long getInformerListLimit() { + return informerListLimit; + } - @Override - @SuppressWarnings("unchecked") - public

PrimaryToSecondaryMapper

getPrimaryToSecondaryMapper() { - return (PrimaryToSecondaryMapper

) primaryToSecondaryMapper; - } - @Override - public Optional getGroupVersionKind() { - return Optional.ofNullable(groupVersionKind); + @SuppressWarnings("UnusedReturnValue") + public class Builder { + + public InformerConfiguration buildForController() { + // if the informer config uses the default "same as controller" value, reset the namespaces to + // the default set for controllers + if (namespaces == null || namespaces.isEmpty() + || InformerEventSourceConfiguration.inheritsNamespacesFromController(namespaces)) { + namespaces = Constants.DEFAULT_NAMESPACES_SET; + } + return InformerConfiguration.this; } - public boolean inheritsNamespacesFromController() { - return InformerConfiguration.inheritsNamespacesFromController(getNamespaces()); + public InformerConfiguration buildForInformerEventSource() { + if (namespaces == null || namespaces.isEmpty()) { + namespaces = Constants.SAME_AS_CONTROLLER_NAMESPACES_SET; + } + if (followControllerNamespacesOnChange == null) { + followControllerNamespacesOnChange = + InformerEventSourceConfiguration.DEFAULT_FOLLOW_CONTROLLER_NAMESPACES_ON_CHANGE; + } + return InformerConfiguration.this; } - @Override - public Set getEffectiveNamespaces(ControllerConfiguration controllerConfiguration) { - if (inheritsNamespacesFromController()) { - return controllerConfiguration.getEffectiveNamespaces(); - } else { - return super.getEffectiveNamespaces(controllerConfiguration); + @SuppressWarnings({"unchecked"}) + public InformerConfiguration.Builder initFromAnnotation(Informer informerConfig, + String context) { + if (informerConfig != null) { + + // override default name if more specific one is provided + if (!Constants.NO_VALUE_SET.equals(informerConfig.name())) { + withName(informerConfig.name()); + } + + var namespaces = Set.of(informerConfig.namespaces()); + withNamespaces(namespaces); + + final var fromAnnotation = informerConfig.labelSelector(); + var labelSelector = Constants.NO_VALUE_SET.equals(fromAnnotation) ? null : fromAnnotation; + withLabelSelector(labelSelector); + + withOnAddFilter(Utils.instantiate(informerConfig.onAddFilter(), + OnAddFilter.class, context)); + + withOnUpdateFilter(Utils.instantiate(informerConfig.onUpdateFilter(), + OnUpdateFilter.class, context)); + + withOnDeleteFilter(Utils.instantiate(informerConfig.onDeleteFilter(), + OnDeleteFilter.class, context)); + + withGenericFilter(Utils.instantiate(informerConfig.genericFilter(), + GenericFilter.class, + context)); + + withFollowControllerNamespacesOnChange( + informerConfig.followControllerNamespacesOnChange()); + + withItemStore(Utils.instantiate(informerConfig.itemStore(), + ItemStore.class, context)); + + final var informerListLimitValue = informerConfig.informerListLimit(); + final var informerListLimit = + informerListLimitValue == Constants.NO_LONG_VALUE_SET ? null : informerListLimitValue; + withInformerListLimit(informerListLimit); } + return this; } - } + public Builder withName(String name) { + InformerConfiguration.this.name = name; + return this; + } - @SuppressWarnings({"unused", "UnusedReturnValue"}) - class InformerConfigurationBuilder { + public Builder withNamespaces(Set namespaces) { + InformerConfiguration.this.namespaces = + ResourceConfiguration.ensureValidNamespaces(namespaces); + return this; + } - private final Class resourceClass; - private final GroupVersionKind groupVersionKind; - private final Class primaryResourceClass; - private String name; - private PrimaryToSecondaryMapper primaryToSecondaryMapper; - private SecondaryToPrimaryMapper secondaryToPrimaryMapper; - private final InformerConfigHolder.Builder config; + public Set namespaces() { + return Set.copyOf(namespaces); + } - private InformerConfigurationBuilder(Class resourceClass, - Class primaryResourceClass) { - this(resourceClass, primaryResourceClass, null); + /** + * Sets the initial set of namespaces to watch (typically extracted from the parent + * {@link io.javaoperatorsdk.operator.processing.Controller}'s configuration), specifying + * whether changes made to the parent controller configured namespaces should be tracked or not. + * + * @param namespaces the initial set of namespaces to watch + * @param followChanges {@code true} to follow the changes made to the parent controller + * namespaces, {@code false} otherwise + * @return the builder instance so that calls can be chained fluently + */ + public Builder withNamespaces(Set namespaces, boolean followChanges) { + withNamespaces(namespaces).withFollowControllerNamespacesOnChange(followChanges); + return this; } - @SuppressWarnings("unchecked") - private InformerConfigurationBuilder(GroupVersionKind groupVersionKind, - Class primaryResourceClass) { - this((Class) GenericKubernetesResource.class, primaryResourceClass, groupVersionKind); + public Builder withNamespacesInheritedFromController() { + withNamespaces(SAME_AS_CONTROLLER_NAMESPACES_SET); + return this; } - private InformerConfigurationBuilder(Class resourceClass, - Class primaryResourceClass, GroupVersionKind groupVersionKind) { - this.resourceClass = resourceClass; - this.groupVersionKind = groupVersionKind; - this.primaryResourceClass = primaryResourceClass; - this.config = InformerConfigHolder.builder(resourceClass); + public Builder withWatchAllNamespaces() { + withNamespaces(WATCH_ALL_NAMESPACE_SET); + return this; } - public InformerConfigurationBuilder withInformerConfiguration( - Consumer.Builder> configurator) { - configurator.accept(config); + public Builder withWatchCurrentNamespace() { + withNamespaces(WATCH_CURRENT_NAMESPACE_SET); return this; } - public InformerConfigurationBuilder withName(String name) { - this.name = name; - config.withName(name); + + /** + * Whether the associated informer should track changes made to the parent + * {@link io.javaoperatorsdk.operator.processing.Controller}'s namespaces configuration. + * + * @param followChanges {@code true} to reconfigure the associated informer when the parent + * controller's namespaces are reconfigured, {@code false} otherwise + * @return the builder instance so that calls can be chained fluently + */ + public Builder withFollowControllerNamespacesOnChange(boolean followChanges) { + InformerConfiguration.this.followControllerNamespacesOnChange = + followChanges; return this; } - public

InformerConfigurationBuilder withPrimaryToSecondaryMapper( - PrimaryToSecondaryMapper

primaryToSecondaryMapper) { - this.primaryToSecondaryMapper = primaryToSecondaryMapper; + public Builder withLabelSelector(String labelSelector) { + InformerConfiguration.this.labelSelector = + ResourceConfiguration.ensureValidLabelSelector(labelSelector); return this; } - public InformerConfigurationBuilder withSecondaryToPrimaryMapper( - SecondaryToPrimaryMapper secondaryToPrimaryMapper) { - this.secondaryToPrimaryMapper = secondaryToPrimaryMapper; + public Builder withOnAddFilter( + OnAddFilter onAddFilter) { + InformerConfiguration.this.onAddFilter = onAddFilter; return this; } - public String getName() { - return name; + public Builder withOnUpdateFilter( + OnUpdateFilter onUpdateFilter) { + InformerConfiguration.this.onUpdateFilter = onUpdateFilter; + return this; } - public SecondaryToPrimaryMapper getSecondaryToPrimaryMapper() { - return secondaryToPrimaryMapper; + public Builder withOnDeleteFilter( + OnDeleteFilter onDeleteFilter) { + InformerConfiguration.this.onDeleteFilter = onDeleteFilter; + return this; } - public InformerConfiguration build() { - if (groupVersionKind != null - && !GenericKubernetesResource.class.isAssignableFrom(resourceClass)) { - throw new IllegalStateException( - "If GroupVersionKind is set the resource type must be GenericKubernetesDependentResource"); - } + public Builder withGenericFilter( + GenericFilter genericFilter) { + InformerConfiguration.this.genericFilter = genericFilter; + return this; + } - return new DefaultInformerConfiguration<>(resourceClass, - groupVersionKind, - primaryToSecondaryMapper, - Objects.requireNonNullElse(secondaryToPrimaryMapper, - Mappers.fromOwnerReferences(HasMetadata.getApiVersion(primaryResourceClass), - HasMetadata.getKind(primaryResourceClass), false)), - config.buildForInformerEventSource()); + public Builder withItemStore(ItemStore itemStore) { + InformerConfiguration.this.itemStore = itemStore; + return this; + } + + public Builder withInformerListLimit(Long informerListLimit) { + InformerConfiguration.this.informerListLimit = informerListLimit; + return this; } } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerEventSourceConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerEventSourceConfiguration.java new file mode 100644 index 0000000000..1e5e1ce666 --- /dev/null +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerEventSourceConfiguration.java @@ -0,0 +1,235 @@ +package io.javaoperatorsdk.operator.api.config.informer; + +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; + +import io.fabric8.kubernetes.api.model.GenericKubernetesResource; +import io.fabric8.kubernetes.api.model.HasMetadata; +import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.config.DefaultResourceConfiguration; +import io.javaoperatorsdk.operator.api.config.ResourceConfiguration; +import io.javaoperatorsdk.operator.api.config.Utils; +import io.javaoperatorsdk.operator.processing.GroupVersionKind; +import io.javaoperatorsdk.operator.processing.event.source.PrimaryToSecondaryMapper; +import io.javaoperatorsdk.operator.processing.event.source.SecondaryToPrimaryMapper; +import io.javaoperatorsdk.operator.processing.event.source.filter.OnDeleteFilter; +import io.javaoperatorsdk.operator.processing.event.source.informer.Mappers; + +import static io.javaoperatorsdk.operator.api.reconciler.Constants.SAME_AS_CONTROLLER_NAMESPACES_SET; + +public interface InformerEventSourceConfiguration + extends ResourceConfiguration { + + boolean DEFAULT_FOLLOW_CONTROLLER_NAMESPACES_ON_CHANGE = true; + + static boolean inheritsNamespacesFromController(Set namespaces) { + return SAME_AS_CONTROLLER_NAMESPACES_SET.equals(namespaces); + } + + static Builder from( + Class resourceClass, Class primaryResourceClass) { + return new Builder<>(resourceClass, primaryResourceClass); + } + + static Builder from( + GroupVersionKind groupVersionKind, Class primaryResourceClass) { + return new Builder<>(groupVersionKind, primaryResourceClass); + } + + /** + * Used in case the watched namespaces are changed dynamically, thus when operator is running (See + * {@link io.javaoperatorsdk.operator.RegisteredController}). If true, changing the target + * namespaces of a controller would result to change target namespaces for the + * InformerEventSource. + * + * @return if namespace changes should be followed + */ + default boolean followControllerNamespaceChanges() { + return getInformerConfig().isFollowControllerNamespacesOnChange(); + } + + /** + * Returns the configured {@link SecondaryToPrimaryMapper} which will allow JOSDK to identify + * which secondary resources are associated with a given primary resource in cases where there is + * no explicit reference to the primary resource (e.g. using owner references) in the associated + * secondary resources. + * + * @return the configured {@link SecondaryToPrimaryMapper} + * @see SecondaryToPrimaryMapper for more explanations on when using such a mapper is useful / + * needed + */ + SecondaryToPrimaryMapper getSecondaryToPrimaryMapper(); + + default Optional> onDeleteFilter() { + return Optional.ofNullable(getInformerConfig().getOnDeleteFilter()); + } + +

PrimaryToSecondaryMapper

getPrimaryToSecondaryMapper(); + + Optional getGroupVersionKind(); + + default String name() { + return getInformerConfig().getName(); + } + + @SuppressWarnings("unchecked") + @Override + default Class getResourceClass() { + return (Class) Utils.getFirstTypeArgumentFromSuperClassOrInterface(getClass(), + InformerEventSourceConfiguration.class); + } + + class DefaultInformerEventSourceConfiguration extends + DefaultResourceConfiguration implements InformerEventSourceConfiguration { + private final PrimaryToSecondaryMapper primaryToSecondaryMapper; + private final SecondaryToPrimaryMapper secondaryToPrimaryMapper; + private final GroupVersionKind groupVersionKind; + + protected DefaultInformerEventSourceConfiguration( + Class resourceClass, + GroupVersionKind groupVersionKind, + PrimaryToSecondaryMapper primaryToSecondaryMapper, + SecondaryToPrimaryMapper secondaryToPrimaryMapper, + InformerConfiguration informerConfig) { + super(resourceClass, informerConfig); + this.groupVersionKind = groupVersionKind; + this.primaryToSecondaryMapper = primaryToSecondaryMapper; + this.secondaryToPrimaryMapper = secondaryToPrimaryMapper; + } + + @Override + public SecondaryToPrimaryMapper getSecondaryToPrimaryMapper() { + return secondaryToPrimaryMapper; + } + + @Override + public Optional> onDeleteFilter() { + return Optional.ofNullable(getInformerConfig().getOnDeleteFilter()); + } + + @Override + @SuppressWarnings("unchecked") + public

PrimaryToSecondaryMapper

getPrimaryToSecondaryMapper() { + return (PrimaryToSecondaryMapper

) primaryToSecondaryMapper; + } + + @Override + public Optional getGroupVersionKind() { + return Optional.ofNullable(groupVersionKind); + } + + public boolean inheritsNamespacesFromController() { + return InformerEventSourceConfiguration.inheritsNamespacesFromController(getNamespaces()); + } + + @Override + public Set getEffectiveNamespaces(ControllerConfiguration controllerConfiguration) { + if (inheritsNamespacesFromController()) { + return controllerConfiguration.getEffectiveNamespaces(); + } else { + return super.getEffectiveNamespaces(controllerConfiguration); + } + } + } + + + @SuppressWarnings({"unused", "UnusedReturnValue"}) + class Builder { + + private final Class resourceClass; + private final GroupVersionKind groupVersionKind; + private final Class primaryResourceClass; + private final InformerConfiguration.Builder config; + private String name; + private PrimaryToSecondaryMapper primaryToSecondaryMapper; + private SecondaryToPrimaryMapper secondaryToPrimaryMapper; + + private Builder(Class resourceClass, + Class primaryResourceClass) { + this(resourceClass, primaryResourceClass, null); + } + + @SuppressWarnings("unchecked") + private Builder(GroupVersionKind groupVersionKind, + Class primaryResourceClass) { + this((Class) GenericKubernetesResource.class, primaryResourceClass, groupVersionKind); + } + + private Builder(Class resourceClass, + Class primaryResourceClass, GroupVersionKind groupVersionKind) { + this.resourceClass = resourceClass; + this.groupVersionKind = groupVersionKind; + this.primaryResourceClass = primaryResourceClass; + this.config = InformerConfiguration.builder(resourceClass); + } + + public Builder withInformerConfiguration( + Consumer.Builder> configurator) { + configurator.accept(config); + return this; + } + + public Builder withName(String name) { + this.name = name; + config.withName(name); + return this; + } + + public

Builder withPrimaryToSecondaryMapper( + PrimaryToSecondaryMapper

primaryToSecondaryMapper) { + this.primaryToSecondaryMapper = primaryToSecondaryMapper; + return this; + } + + public Builder withSecondaryToPrimaryMapper( + SecondaryToPrimaryMapper secondaryToPrimaryMapper) { + this.secondaryToPrimaryMapper = secondaryToPrimaryMapper; + return this; + } + + public String getName() { + return name; + } + + public SecondaryToPrimaryMapper getSecondaryToPrimaryMapper() { + return secondaryToPrimaryMapper; + } + + public void updateFrom(InformerConfiguration informerConfig) { + if (informerConfig != null) { + final var informerConfigName = informerConfig.getName(); + if (informerConfigName != null) { + this.name = informerConfigName; + } + config.withNamespaces(informerConfig.getNamespaces()) + .withFollowControllerNamespacesOnChange( + informerConfig.isFollowControllerNamespacesOnChange()) + .withLabelSelector(informerConfig.getLabelSelector()) + .withItemStore(informerConfig.getItemStore()) + .withOnAddFilter(informerConfig.getOnAddFilter()) + .withOnUpdateFilter(informerConfig.getOnUpdateFilter()) + .withOnDeleteFilter(informerConfig.getOnDeleteFilter()) + .withGenericFilter(informerConfig.getGenericFilter()) + .withInformerListLimit(informerConfig.getInformerListLimit()); + } + } + + public InformerEventSourceConfiguration build() { + if (groupVersionKind != null + && !GenericKubernetesResource.class.isAssignableFrom(resourceClass)) { + throw new IllegalStateException( + "If GroupVersionKind is set the resource type must be GenericKubernetesDependentResource"); + } + + return new DefaultInformerEventSourceConfiguration<>(resourceClass, + groupVersionKind, + primaryToSecondaryMapper, + Objects.requireNonNullElse(secondaryToPrimaryMapper, + Mappers.fromOwnerReferences(HasMetadata.getApiVersion(primaryResourceClass), + HasMetadata.getKind(primaryResourceClass), false)), + config.buildForInformerEventSource()); + } + } +} diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java index a5232700c0..eb709b0d5a 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java @@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.processing.event.rate.LinearRateLimiter; import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter; import io.javaoperatorsdk.operator.processing.retry.GenericRetry; @@ -21,7 +21,7 @@ String name() default Constants.NO_VALUE_SET; - InformerConfig informerConfig() default @InformerConfig; + Informer informer() default @Informer; /** * Optional finalizer name, if it is not provided, one will be automatically generated. Note that diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesDependentResource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesDependentResource.java index 3817d8dadc..785ad21d2d 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesDependentResource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesDependentResource.java @@ -2,7 +2,7 @@ import io.fabric8.kubernetes.api.model.GenericKubernetesResource; import io.fabric8.kubernetes.api.model.HasMetadata; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; import io.javaoperatorsdk.operator.processing.GroupVersionKind; @@ -16,9 +16,10 @@ public GenericKubernetesDependentResource(GroupVersionKind groupVersionKind) { this.groupVersionKind = groupVersionKind; } - protected InformerConfiguration.InformerConfigurationBuilder informerConfigurationBuilder( + protected InformerEventSourceConfiguration.Builder informerConfigurationBuilder( EventSourceContext

context) { - return InformerConfiguration.from(groupVersionKind, context.getPrimaryResourceClass()); + return InformerEventSourceConfiguration.from(groupVersionKind, + context.getPrimaryResourceClass()); } @SuppressWarnings("unused") diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/InformerConfigHolder.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/InformerConfigHolder.java deleted file mode 100644 index 22517372f8..0000000000 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/InformerConfigHolder.java +++ /dev/null @@ -1,296 +0,0 @@ -package io.javaoperatorsdk.operator.processing.dependent.kubernetes; - -import java.util.Set; - -import io.fabric8.kubernetes.api.model.HasMetadata; -import io.fabric8.kubernetes.client.informers.cache.ItemStore; -import io.javaoperatorsdk.operator.api.config.ResourceConfiguration; -import io.javaoperatorsdk.operator.api.config.Utils; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; -import io.javaoperatorsdk.operator.api.reconciler.Constants; -import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter; -import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter; -import io.javaoperatorsdk.operator.processing.event.source.filter.OnDeleteFilter; -import io.javaoperatorsdk.operator.processing.event.source.filter.OnUpdateFilter; - -import static io.javaoperatorsdk.operator.api.reconciler.Constants.*; - - -@SuppressWarnings("unused") -public class InformerConfigHolder { - private final Builder builder = new Builder(); - private String name; - private Set namespaces; - private Boolean followControllerNamespacesOnChange; - private String labelSelector; - private OnAddFilter onAddFilter; - private OnUpdateFilter onUpdateFilter; - private OnDeleteFilter onDeleteFilter; - private GenericFilter genericFilter; - private ItemStore itemStore; - private Long informerListLimit; - - public InformerConfigHolder(String name, Set namespaces, - boolean followControllerNamespacesOnChange, - String labelSelector, OnAddFilter onAddFilter, - OnUpdateFilter onUpdateFilter, OnDeleteFilter onDeleteFilter, - GenericFilter genericFilter, ItemStore itemStore, Long informerListLimit) { - this.name = name; - this.namespaces = namespaces; - this.followControllerNamespacesOnChange = followControllerNamespacesOnChange; - this.labelSelector = labelSelector; - this.onAddFilter = onAddFilter; - this.onUpdateFilter = onUpdateFilter; - this.onDeleteFilter = onDeleteFilter; - this.genericFilter = genericFilter; - this.itemStore = itemStore; - this.informerListLimit = informerListLimit; - } - - private InformerConfigHolder() {} - - @SuppressWarnings({"rawtypes", "unchecked"}) - public static InformerConfigHolder.Builder builder() { - return new InformerConfigHolder().builder; - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - public static InformerConfigHolder.Builder builder( - Class resourceClass) { - return new InformerConfigHolder().builder; - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - public static InformerConfigHolder.Builder builder( - InformerConfigHolder original) { - return new InformerConfigHolder(original.name, original.namespaces, - original.followControllerNamespacesOnChange, original.labelSelector, original.onAddFilter, - original.onUpdateFilter, original.onDeleteFilter, original.genericFilter, - original.itemStore, original.informerListLimit).builder; - } - - public String getName() { - return name; - } - - public Set getNamespaces() { - return namespaces; - } - - public boolean isFollowControllerNamespacesOnChange() { - return followControllerNamespacesOnChange; - } - - public String getLabelSelector() { - return labelSelector; - } - - public OnAddFilter getOnAddFilter() { - return onAddFilter; - } - - public OnUpdateFilter getOnUpdateFilter() { - return onUpdateFilter; - } - - public OnDeleteFilter getOnDeleteFilter() { - return onDeleteFilter; - } - - public GenericFilter getGenericFilter() { - return genericFilter; - } - - public ItemStore getItemStore() { - return itemStore; - } - - public Long getInformerListLimit() { - return informerListLimit; - } - - void updateInformerConfigBuilder( - InformerConfiguration.InformerConfigurationBuilder builder) { - if (name != null) { - builder.withName(name); - } - builder.withInformerConfiguration(c -> c.withNamespaces(namespaces) - .withFollowControllerNamespacesOnChange(followControllerNamespacesOnChange) - .withLabelSelector(labelSelector) - .withItemStore(itemStore) - .withOnAddFilter(onAddFilter) - .withOnUpdateFilter(onUpdateFilter) - .withOnDeleteFilter(onDeleteFilter) - .withGenericFilter(genericFilter) - .withInformerListLimit(informerListLimit)); - } - - @SuppressWarnings("UnusedReturnValue") - public class Builder { - - public InformerConfigHolder buildForController() { - // if the informer config uses the default "same as controller" value, reset the namespaces to - // the default set for controllers - if (namespaces == null || namespaces.isEmpty() - || InformerConfiguration.inheritsNamespacesFromController(namespaces)) { - namespaces = Constants.DEFAULT_NAMESPACES_SET; - } - return InformerConfigHolder.this; - } - - public InformerConfigHolder buildForInformerEventSource() { - if (namespaces == null || namespaces.isEmpty()) { - namespaces = Constants.SAME_AS_CONTROLLER_NAMESPACES_SET; - } - if (followControllerNamespacesOnChange == null) { - followControllerNamespacesOnChange = - InformerConfiguration.DEFAULT_FOLLOW_CONTROLLER_NAMESPACES_ON_CHANGE; - } - return InformerConfigHolder.this; - } - - @SuppressWarnings({"unchecked"}) - public InformerConfigHolder.Builder initFromAnnotation(InformerConfig informerConfig, - String context) { - if (informerConfig != null) { - - // override default name if more specific one is provided - if (!Constants.NO_VALUE_SET.equals(informerConfig.name())) { - withName(informerConfig.name()); - } - - var namespaces = Set.of(informerConfig.namespaces()); - withNamespaces(namespaces); - - final var fromAnnotation = informerConfig.labelSelector(); - var labelSelector = Constants.NO_VALUE_SET.equals(fromAnnotation) ? null : fromAnnotation; - withLabelSelector(labelSelector); - - withOnAddFilter(Utils.instantiate(informerConfig.onAddFilter(), - OnAddFilter.class, context)); - - withOnUpdateFilter(Utils.instantiate(informerConfig.onUpdateFilter(), - OnUpdateFilter.class, context)); - - withOnDeleteFilter(Utils.instantiate(informerConfig.onDeleteFilter(), - OnDeleteFilter.class, context)); - - withGenericFilter(Utils.instantiate(informerConfig.genericFilter(), - GenericFilter.class, - context)); - - withFollowControllerNamespacesOnChange( - informerConfig.followControllerNamespacesOnChange()); - - withItemStore(Utils.instantiate(informerConfig.itemStore(), - ItemStore.class, context)); - - final var informerListLimitValue = informerConfig.informerListLimit(); - final var informerListLimit = - informerListLimitValue == Constants.NO_LONG_VALUE_SET ? null : informerListLimitValue; - withInformerListLimit(informerListLimit); - } - return this; - } - - public Builder withName(String name) { - InformerConfigHolder.this.name = name; - return this; - } - - public Builder withNamespaces(Set namespaces) { - InformerConfigHolder.this.namespaces = - ResourceConfiguration.ensureValidNamespaces(namespaces); - return this; - } - - public Set namespaces() { - return Set.copyOf(namespaces); - } - - /** - * Sets the initial set of namespaces to watch (typically extracted from the parent - * {@link io.javaoperatorsdk.operator.processing.Controller}'s configuration), specifying - * whether changes made to the parent controller configured namespaces should be tracked or not. - * - * @param namespaces the initial set of namespaces to watch - * @param followChanges {@code true} to follow the changes made to the parent controller - * namespaces, {@code false} otherwise - * @return the builder instance so that calls can be chained fluently - */ - public Builder withNamespaces(Set namespaces, boolean followChanges) { - withNamespaces(namespaces).withFollowControllerNamespacesOnChange(followChanges); - return this; - } - - public Builder withNamespacesInheritedFromController() { - withNamespaces(SAME_AS_CONTROLLER_NAMESPACES_SET); - return this; - } - - public Builder withWatchAllNamespaces() { - withNamespaces(WATCH_ALL_NAMESPACE_SET); - return this; - } - - public Builder withWatchCurrentNamespace() { - withNamespaces(WATCH_CURRENT_NAMESPACE_SET); - return this; - } - - - /** - * Whether the associated informer should track changes made to the parent - * {@link io.javaoperatorsdk.operator.processing.Controller}'s namespaces configuration. - * - * @param followChanges {@code true} to reconfigure the associated informer when the parent - * controller's namespaces are reconfigured, {@code false} otherwise - * @return the builder instance so that calls can be chained fluently - */ - public Builder withFollowControllerNamespacesOnChange(boolean followChanges) { - InformerConfigHolder.this.followControllerNamespacesOnChange = - followChanges; - return this; - } - - public Builder withLabelSelector(String labelSelector) { - InformerConfigHolder.this.labelSelector = - ResourceConfiguration.ensureValidLabelSelector(labelSelector); - return this; - } - - public Builder withOnAddFilter( - OnAddFilter onAddFilter) { - InformerConfigHolder.this.onAddFilter = onAddFilter; - return this; - } - - public Builder withOnUpdateFilter( - OnUpdateFilter onUpdateFilter) { - InformerConfigHolder.this.onUpdateFilter = onUpdateFilter; - return this; - } - - public Builder withOnDeleteFilter( - OnDeleteFilter onDeleteFilter) { - InformerConfigHolder.this.onDeleteFilter = onDeleteFilter; - return this; - } - - public Builder withGenericFilter( - GenericFilter genericFilter) { - InformerConfigHolder.this.genericFilter = genericFilter; - return this; - } - - public Builder withItemStore(ItemStore itemStore) { - InformerConfigHolder.this.itemStore = itemStore; - return this; - } - - public Builder withInformerListLimit(Long informerListLimit) { - InformerConfigHolder.this.informerListLimit = informerListLimit; - return this; - } - } -} diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependent.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependent.java index 0c35751563..818768474c 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependent.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependent.java @@ -5,6 +5,8 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import io.javaoperatorsdk.operator.api.config.informer.Informer; + @Retention(RetentionPolicy.RUNTIME) @@ -28,6 +30,6 @@ */ BooleanWithUndefined useSSA() default BooleanWithUndefined.UNDEFINED; - InformerConfig informerConfig() default @InformerConfig; + Informer informer() default @Informer; } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentConverter.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentConverter.java index c8aa20840e..36625b0689 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentConverter.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentConverter.java @@ -5,6 +5,7 @@ import io.javaoperatorsdk.operator.api.config.Utils; import io.javaoperatorsdk.operator.api.config.dependent.ConfigurationConverter; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import static io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig.DEFAULT_CREATE_RESOURCE_ONLY_IF_NOT_EXISTING_WITH_SSA; @@ -35,16 +36,16 @@ public KubernetesDependentResourceConfig configFrom(KubernetesDependent confi } @SuppressWarnings({"unchecked"}) - private InformerConfigHolder createInformerConfig( + private InformerConfiguration createInformerConfig( KubernetesDependent configAnnotation, DependentResourceSpec> spec, ControllerConfiguration controllerConfig) { Class> dependentResourceClass = (Class>) spec.getDependentResourceClass(); - InformerConfigHolder.Builder config = InformerConfigHolder.builder(); + InformerConfiguration.Builder config = InformerConfiguration.builder(); if (configAnnotation != null) { - final var informerConfig = configAnnotation.informerConfig(); + final var informerConfig = configAnnotation.informer(); final var context = Utils.contextFor(controllerConfig, dependentResourceClass, configAnnotation.annotationType()); config = config.initFromAnnotation(informerConfig, context); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java index ae4c2d1d6b..93f390c3fb 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java @@ -13,7 +13,7 @@ import io.fabric8.kubernetes.client.dsl.Resource; import io.javaoperatorsdk.operator.ReconcilerUtils; import io.javaoperatorsdk.operator.api.config.dependent.Configured; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; import io.javaoperatorsdk.operator.api.reconciler.Ignore; @@ -188,7 +188,7 @@ protected void addReferenceHandlingMetadata(R desired, P primary) { @Override protected InformerEventSource createEventSource(EventSourceContext

context) { - final InformerConfiguration.InformerConfigurationBuilder configBuilder = + final InformerEventSourceConfiguration.Builder configBuilder = informerConfigurationBuilder(context) .withSecondaryToPrimaryMapper(getSecondaryToPrimaryMapper(context).orElseThrow()) .withName(name()); @@ -196,7 +196,7 @@ protected InformerEventSource createEventSource(EventSourceContext

cont // update configuration from annotation if specified if (kubernetesDependentResourceConfig != null && kubernetesDependentResourceConfig.informerConfig() != null) { - kubernetesDependentResourceConfig.informerConfig().updateInformerConfigBuilder(configBuilder); + configBuilder.updateFrom(kubernetesDependentResourceConfig.informerConfig()); } var es = new InformerEventSource<>(configBuilder.build(), context); @@ -207,9 +207,9 @@ protected InformerEventSource createEventSource(EventSourceContext

cont /** * To handle {@link io.fabric8.kubernetes.api.model.GenericKubernetesResource} based dependents. */ - protected InformerConfiguration.InformerConfigurationBuilder informerConfigurationBuilder( + protected InformerEventSourceConfiguration.Builder informerConfigurationBuilder( EventSourceContext

context) { - return InformerConfiguration.from(resourceType(), context.getPrimaryResourceClass()); + return InformerEventSourceConfiguration.from(resourceType(), context.getPrimaryResourceClass()); } private boolean useNonOwnerRefBasedSecondaryToPrimaryMapping() { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResourceConfig.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResourceConfig.java index bdb07d9230..2b419c2d0d 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResourceConfig.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResourceConfig.java @@ -2,6 +2,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; public class KubernetesDependentResourceConfig { @@ -10,12 +11,12 @@ public class KubernetesDependentResourceConfig { private final Boolean useSSA; private final boolean createResourceOnlyIfNotExistingWithSSA; - private final InformerConfigHolder informerConfig; + private final InformerConfiguration informerConfig; public KubernetesDependentResourceConfig( Boolean useSSA, boolean createResourceOnlyIfNotExistingWithSSA, - InformerConfigHolder informerConfig) { + InformerConfiguration informerConfig) { this.useSSA = useSSA; this.createResourceOnlyIfNotExistingWithSSA = createResourceOnlyIfNotExistingWithSSA; this.informerConfig = informerConfig; @@ -29,7 +30,7 @@ public Boolean useSSA() { return useSSA; } - public InformerConfigHolder informerConfig() { + public InformerConfiguration informerConfig() { return informerConfig; } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResourceConfigBuilder.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResourceConfigBuilder.java index dcfbc94a07..3610cb074b 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResourceConfigBuilder.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResourceConfigBuilder.java @@ -2,12 +2,13 @@ import io.fabric8.kubernetes.api.model.HasMetadata; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; public final class KubernetesDependentResourceConfigBuilder { private boolean createResourceOnlyIfNotExistingWithSSA; private Boolean useSSA = null; - private InformerConfigHolder informerConfigHolder; + private InformerConfiguration informerConfiguration; public KubernetesDependentResourceConfigBuilder() {} @@ -24,14 +25,14 @@ public KubernetesDependentResourceConfigBuilder withUseSSA(boolean useSSA) { } public KubernetesDependentResourceConfigBuilder withKubernetesDependentInformerConfig( - InformerConfigHolder informerConfigHolder) { - this.informerConfigHolder = informerConfigHolder; + InformerConfiguration informerConfiguration) { + this.informerConfiguration = informerConfiguration; return this; } public KubernetesDependentResourceConfig build() { return new KubernetesDependentResourceConfig<>( useSSA, createResourceOnlyIfNotExistingWithSSA, - informerConfigHolder); + informerConfiguration); } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/PrimaryToSecondaryMapper.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/PrimaryToSecondaryMapper.java index 9a5bfbac5d..2ff61f81e8 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/PrimaryToSecondaryMapper.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/PrimaryToSecondaryMapper.java @@ -3,6 +3,7 @@ import java.util.Set; import io.fabric8.kubernetes.api.model.HasMetadata; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.processing.event.ResourceID; /** @@ -12,13 +13,12 @@ * primary resources *without* a standard way (e.g. owner reference or annotations) to materialize * that relations. When owner references are present, a {@code PrimaryToSecondaryMapper} instance * should not be needed. In other words, associating such a mapper with your - * {@link io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration} is usually needed - * when your secondary resources are referenced in some way by your primary resource but that this - * link does not exist in the secondary resource information. The mapper implementation instructs - * the SDK on how to find all the secondary resources associated with a given primary resource so - * that this primary resource can properly be reconciled when changes impact the associated - * secondary resources, even though these don't contain any information allowing to make such an - * inference. + * {@link InformerEventSourceConfiguration} is usually needed when your secondary resources are + * referenced in some way by your primary resource but that this link does not exist in the + * secondary resource information. The mapper implementation instructs the SDK on how to find all + * the secondary resources associated with a given primary resource so that this primary resource + * can properly be reconciled when changes impact the associated secondary resources, even though + * these don't contain any information allowing to make such an inference. *

*

* This helps particularly in cases where several secondary resources, listed in some way in the diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java index f5b6f3a6d8..db3b9d6601 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java @@ -10,7 +10,7 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.dsl.MixedOperation; import io.fabric8.kubernetes.client.informers.ResourceEventHandler; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; import io.javaoperatorsdk.operator.processing.event.Event; import io.javaoperatorsdk.operator.processing.event.EventHandler; @@ -64,7 +64,7 @@ * @param

type of the primary resource */ public class InformerEventSource - extends ManagedInformerEventSource> + extends ManagedInformerEventSource> implements ResourceEventHandler { public static String PREVIOUS_ANNOTATION_KEY = "javaoperatorsdk.io/previous"; @@ -77,18 +77,18 @@ public class InformerEventSource private final String id = UUID.randomUUID().toString(); public InformerEventSource( - InformerConfiguration configuration, EventSourceContext

context) { + InformerEventSourceConfiguration configuration, EventSourceContext

context) { this(configuration, context.getClient(), context.getControllerConfiguration().getConfigurationService() .parseResourceVersionsForEventFilteringAndCaching()); } - InformerEventSource(InformerConfiguration configuration, KubernetesClient client) { + InformerEventSource(InformerEventSourceConfiguration configuration, KubernetesClient client) { this(configuration, client, false); } @SuppressWarnings({"unchecked", "rawtypes"}) - private InformerEventSource(InformerConfiguration configuration, + private InformerEventSource(InformerEventSourceConfiguration configuration, KubernetesClient client, boolean parseResourceVersions) { super(configuration.name(), diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java index b905629e69..07c9e0a6cc 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java @@ -9,7 +9,7 @@ import org.slf4j.LoggerFactory; import io.fabric8.kubernetes.api.model.HasMetadata; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource; import io.javaoperatorsdk.operator.processing.event.ResourceID; @@ -161,9 +161,9 @@ public synchronized boolean isKnownResourceVersion(T resource) { } /** - * @return true if {@link InformerConfiguration#parseResourceVersions()} is enabled and the - * resourceVersion of newResource is numerically greater than cachedResource, otherwise - * false + * @return true if {@link InformerEventSourceConfiguration#parseResourceVersions()} is enabled and + * the resourceVersion of newResource is numerically greater than cachedResource, + * otherwise false */ private boolean isLaterResourceVersion(ResourceID resourceId, T newResource, T cachedResource) { try { 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 f362726b65..00733b496b 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 @@ -11,6 +11,8 @@ 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.config.informer.Informer; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Constants; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; @@ -22,15 +24,13 @@ import io.javaoperatorsdk.operator.api.reconciler.dependent.GarbageCollected; import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult; import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ConfiguredDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfigBuilder; import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition; -import static io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration.inheritsNamespacesFromController; +import static io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration.inheritsNamespacesFromController; import static org.junit.jupiter.api.Assertions.*; class ControllerConfigurationOverriderTest { @@ -271,7 +271,7 @@ void replaceNamedDependentResourceConfigShouldWork() { // override the namespaces for the dependent resource final var overriddenNS = "newNS"; final var labelSelector = "foo=bar"; - final var overridingInformerConfig = InformerConfigHolder.builder(ConfigMap.class) + final var overridingInformerConfig = InformerConfiguration.builder(ConfigMap.class) .withNamespaces(Set.of(overriddenNS)) .withLabelSelector(labelSelector) .buildForInformerEventSource(); @@ -304,7 +304,7 @@ public MyItemStore() { } @ControllerConfiguration( - informerConfig = @InformerConfig(namespaces = "foo", itemStore = MyItemStore.class)) + informer = @Informer(namespaces = "foo", itemStore = MyItemStore.class)) private static class WatchCurrentReconciler implements Reconciler { @Override @@ -346,7 +346,7 @@ public boolean isMet(DependentResource dependentResource, @Workflow(dependents = @Dependent(type = ReadOnlyDependent.class, readyPostcondition = TestCondition.class)) @ControllerConfiguration( - informerConfig = @InformerConfig(namespaces = OneDepReconciler.CONFIGURED_NS)) + informer = @Informer(namespaces = OneDepReconciler.CONFIGURED_NS)) private static class OneDepReconciler implements Reconciler { private static final String CONFIGURED_NS = "foo"; @@ -366,7 +366,7 @@ public ReadOnlyDependent() { } @KubernetesDependent( - informerConfig = @InformerConfig(namespaces = Constants.WATCH_ALL_NAMESPACES)) + informer = @Informer(namespaces = Constants.WATCH_ALL_NAMESPACES)) public static class WatchAllNSDependent extends KubernetesDependentResource implements GarbageCollected { @@ -378,7 +378,7 @@ public WatchAllNSDependent() { @Workflow(dependents = @Dependent(type = OverriddenNSDependent.class)) @ControllerConfiguration( - informerConfig = @InformerConfig(namespaces = OverriddenNSOnDepReconciler.CONFIGURED_NS)) + informer = @Informer(namespaces = OverriddenNSOnDepReconciler.CONFIGURED_NS)) public static class OverriddenNSOnDepReconciler implements Reconciler { private static final String CONFIGURED_NS = "parentNS"; @@ -389,7 +389,7 @@ public UpdateControl reconcile(ConfigMap resource, Context } } - @KubernetesDependent(informerConfig = @InformerConfig(namespaces = OverriddenNSDependent.DEP_NS)) + @KubernetesDependent(informer = @Informer(namespaces = OverriddenNSDependent.DEP_NS)) public static class OverriddenNSDependent extends KubernetesDependentResource implements GarbageCollected { diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ResourceConfigurationTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ResourceConfigurationTest.java index 2a65a179ea..5cf8376ea2 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ResourceConfigurationTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ResourceConfigurationTest.java @@ -7,15 +7,15 @@ import org.junit.jupiter.api.Test; import io.fabric8.kubernetes.api.model.HasMetadata; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Constants; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; import static org.junit.jupiter.api.Assertions.*; class ResourceConfigurationTest { public static final ResourceConfiguration DEFAULT = - () -> InformerConfigHolder.builder().buildForInformerEventSource(); + () -> InformerConfiguration.builder().buildForInformerEventSource(); @Test void allNamespacesWatched() { diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java index 7e45bda68c..e24de96dbb 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java @@ -10,7 +10,7 @@ import io.javaoperatorsdk.operator.OperatorException; import io.javaoperatorsdk.operator.api.config.BaseConfigurationService; import io.javaoperatorsdk.operator.api.config.MockControllerConfiguration; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.processing.event.source.AbstractEventSource; @@ -168,7 +168,8 @@ void changesNamespacesOnControllerAndInformerEventSources() { when(controllerResourceEventSourceMock.allowsNamespaceChanges()).thenCallRealMethod(); var manager = new EventSourceManager(controller, eventSources); - InformerConfiguration informerConfigurationMock = mock(InformerConfiguration.class); + InformerEventSourceConfiguration informerConfigurationMock = + mock(InformerEventSourceConfiguration.class); when(informerConfigurationMock.followControllerNamespaceChanges()).thenReturn(true); InformerEventSource informerEventSource = mock(InformerEventSource.class); when(informerEventSource.name()).thenReturn("ies"); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerEventSourceTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerEventSourceTest.java index 053e6ebb22..5282fd2138 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerEventSourceTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerEventSourceTest.java @@ -12,10 +12,10 @@ import io.javaoperatorsdk.operator.api.config.BaseConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.ResolvedControllerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.processing.Controller; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; import io.javaoperatorsdk.operator.processing.event.EventHandler; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; import io.javaoperatorsdk.operator.processing.event.source.AbstractEventSourceTestBase; @@ -202,7 +202,7 @@ public TestConfiguration(boolean generationAware, OnAddFilter temporaryResourceCacheMock = mock(TemporaryResourceCache.class); private final EventHandler eventHandlerMock = mock(EventHandler.class); - private final InformerConfiguration informerConfiguration = - mock(InformerConfiguration.class); + private final InformerEventSourceConfiguration informerConfiguration = + mock(InformerEventSourceConfiguration.class); @BeforeEach void setup() { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/builtinresourcecleaner/BuiltInResourceCleanerReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/builtinresourcecleaner/BuiltInResourceCleanerReconciler.java index ac13c497cd..79150eb745 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/builtinresourcecleaner/BuiltInResourceCleanerReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/builtinresourcecleaner/BuiltInResourceCleanerReconciler.java @@ -3,10 +3,10 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.Service; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; -@ControllerConfiguration(informerConfig = @InformerConfig(labelSelector = "builtintest=true")) +@ControllerConfiguration(informer = @Informer(labelSelector = "builtintest=true")) public class BuiltInResourceCleanerReconciler implements Reconciler, Cleaner { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceTestReconciler.java index fac4263c3c..bac97514b6 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceTestReconciler.java @@ -6,7 +6,7 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.event.ResourceID; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @@ -25,7 +25,8 @@ public List> prepareEventSourc InformerEventSource configMapES = new InformerEventSource<>( - InformerConfiguration.from(ConfigMap.class, ChangeNamespaceTestCustomResource.class) + InformerEventSourceConfiguration + .from(ConfigMap.class, ChangeNamespaceTestCustomResource.class) .build(), context); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/clusterscopedresource/ClusterScopedCustomResourceReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/clusterscopedresource/ClusterScopedCustomResourceReconciler.java index c108b9edbc..3be5a055d7 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/clusterscopedresource/ClusterScopedCustomResourceReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/clusterscopedresource/ClusterScopedCustomResourceReconciler.java @@ -6,7 +6,7 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; @@ -60,7 +60,7 @@ private ConfigMap desired(ClusterScopedCustomResource resource) { public List> prepareEventSources( EventSourceContext context) { var ies = new InformerEventSource<>( - InformerConfiguration.from(ConfigMap.class, ClusterScopedCustomResource.class) + InformerEventSourceConfiguration.from(ConfigMap.class, ClusterScopedCustomResource.class) .withSecondaryToPrimaryMapper( Mappers.fromOwnerReferences(context.getPrimaryResourceClass(), true)) .withInformerConfiguration( diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java index 35676cd669..041021cf68 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java @@ -7,7 +7,7 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMeta; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; @@ -69,8 +69,9 @@ private ConfigMap createConfigMap(CreateUpdateEventFilterTestCustomResource reso @Override public List> prepareEventSources( EventSourceContext context) { - InformerConfiguration informerConfiguration = - InformerConfiguration.from(ConfigMap.class, CreateUpdateEventFilterTestCustomResource.class) + InformerEventSourceConfiguration informerConfiguration = + InformerEventSourceConfiguration + .from(ConfigMap.class, CreateUpdateEventFilterTestCustomResource.class) .withInformerConfiguration(c -> c .withLabelSelector("integrationtest = " + this.getClass().getSimpleName())) .build(); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/deployment/DeploymentReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/deployment/DeploymentReconciler.java index c62be34e4f..ef04ca644a 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/deployment/DeploymentReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/deployment/DeploymentReconciler.java @@ -9,15 +9,15 @@ import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentCondition; import io.fabric8.kubernetes.api.model.apps.DeploymentStatus; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @ControllerConfiguration( - informerConfig = @InformerConfig(labelSelector = "test=KubernetesResourceStatusUpdateIT")) + informer = @Informer(labelSelector = "test=KubernetesResourceStatusUpdateIT")) public class DeploymentReconciler implements Reconciler, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/dynamicgenericeventsourceregistration/DynamicGenericEventSourceRegistrationReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/dynamicgenericeventsourceregistration/DynamicGenericEventSourceRegistrationReconciler.java index b0e120cb6d..34597034af 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/dynamicgenericeventsourceregistration/DynamicGenericEventSourceRegistrationReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/dynamicgenericeventsourceregistration/DynamicGenericEventSourceRegistrationReconciler.java @@ -6,7 +6,7 @@ import io.fabric8.kubernetes.api.model.*; import io.fabric8.kubernetes.client.dsl.NonDeletingOperation; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; @@ -75,7 +75,7 @@ private InformerEventSource context) { return new InformerEventSource<>( - InformerConfiguration + InformerEventSourceConfiguration .from(gvkFor(clazz), DynamicGenericEventSourceRegistrationCustomResource.class) .withName(clazz.getSimpleName()) .build(), diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/filter/FilterTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/filter/FilterTestReconciler.java index 16f94e4e09..22a9bc7067 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/filter/FilterTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/filter/FilterTestReconciler.java @@ -6,17 +6,17 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.Informer; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; -@ControllerConfiguration(informerConfig = @InformerConfig(onUpdateFilter = UpdateFilter.class)) +@ControllerConfiguration(informer = @Informer(onUpdateFilter = UpdateFilter.class)) public class FilterTestReconciler implements Reconciler { @@ -57,7 +57,7 @@ public int getNumberOfExecutions() { public List> prepareEventSources( EventSourceContext context) { - final var informerConfiguration = InformerConfiguration + final var informerConfiguration = InformerEventSourceConfiguration .from(ConfigMap.class, FilterTestCustomResource.class) .withInformerConfiguration(c -> c.withOnUpdateFilter((newCM, oldCM) -> !newCM.getData().get(CM_VALUE_KEY) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/generickubernetesresourcehandling/GenericKubernetesResourceHandlingReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/generickubernetesresourcehandling/GenericKubernetesResourceHandlingReconciler.java index 7d0f3b1d8f..2d7cf217bc 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/generickubernetesresourcehandling/GenericKubernetesResourceHandlingReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/generickubernetesresourcehandling/GenericKubernetesResourceHandlingReconciler.java @@ -7,7 +7,7 @@ import java.util.Map; import io.fabric8.kubernetes.api.model.GenericKubernetesResource; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.GroupVersionKind; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @@ -68,7 +68,7 @@ GenericKubernetesResource desiredConfigMap( public List> prepareEventSources( EventSourceContext context) { - var informerEventSource = new InformerEventSource<>(InformerConfiguration.from( + var informerEventSource = new InformerEventSource<>(InformerEventSourceConfiguration.from( new GroupVersionKind("", VERSION, KIND), GenericKubernetesResourceHandlingCustomResource.class).build(), context); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/informereventsource/InformerEventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/informereventsource/InformerEventSourceTestCustomReconciler.java index 8d0178fd1b..59430fd581 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/informereventsource/InformerEventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/informereventsource/InformerEventSourceTestCustomReconciler.java @@ -8,7 +8,7 @@ import org.slf4j.LoggerFactory; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; @@ -35,8 +35,9 @@ public class InformerEventSourceTestCustomReconciler public List> prepareEventSources( EventSourceContext context) { - InformerConfiguration config = - InformerConfiguration.from(ConfigMap.class, InformerEventSourceTestCustomResource.class) + InformerEventSourceConfiguration config = + InformerEventSourceConfiguration + .from(ConfigMap.class, InformerEventSourceTestCustomResource.class) .withSecondaryToPrimaryMapper(Mappers.fromAnnotation(RELATED_RESOURCE_NAME)) .build(); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/labelselector/LabelSelectorTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/labelselector/LabelSelectorTestReconciler.java index d1d5109b45..771effc3a1 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/labelselector/LabelSelectorTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/labelselector/LabelSelectorTestReconciler.java @@ -2,15 +2,15 @@ import java.util.concurrent.atomic.AtomicInteger; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; import static io.javaoperatorsdk.operator.baseapi.labelselector.LabelSelectorTestReconciler.LABEL_KEY; import static io.javaoperatorsdk.operator.baseapi.labelselector.LabelSelectorTestReconciler.LABEL_VALUE; @ControllerConfiguration( - informerConfig = @InformerConfig(labelSelector = LABEL_KEY + "=" + LABEL_VALUE)) + informer = @Informer(labelSelector = LABEL_KEY + "=" + LABEL_VALUE)) public class LabelSelectorTestReconciler implements Reconciler, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplereconcilersametype/MultipleReconcilerSameTypeReconciler1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplereconcilersametype/MultipleReconcilerSameTypeReconciler1.java index e9a80a8812..a3ffd9667e 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplereconcilersametype/MultipleReconcilerSameTypeReconciler1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplereconcilersametype/MultipleReconcilerSameTypeReconciler1.java @@ -2,11 +2,11 @@ import java.util.concurrent.atomic.AtomicInteger; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; -@ControllerConfiguration(informerConfig = @InformerConfig(labelSelector = "reconciler = 1")) +@ControllerConfiguration(informer = @Informer(labelSelector = "reconciler = 1")) public class MultipleReconcilerSameTypeReconciler1 implements Reconciler, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplereconcilersametype/MultipleReconcilerSameTypeReconciler2.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplereconcilersametype/MultipleReconcilerSameTypeReconciler2.java index d7a7ae54b8..ee446a7cf4 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplereconcilersametype/MultipleReconcilerSameTypeReconciler2.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplereconcilersametype/MultipleReconcilerSameTypeReconciler2.java @@ -2,14 +2,14 @@ import java.util.concurrent.atomic.AtomicInteger; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; -@ControllerConfiguration(informerConfig = @InformerConfig(labelSelector = "reconciler != 1")) +@ControllerConfiguration(informer = @Informer(labelSelector = "reconciler != 1")) public class MultipleReconcilerSameTypeReconciler2 implements Reconciler, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java index 12d726e3a4..bde573171d 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java @@ -7,7 +7,7 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMeta; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; @@ -68,7 +68,7 @@ public int getNumberOfExecutions() { public List> prepareEventSources( EventSourceContext context) { - var config = InformerConfiguration + var config = InformerEventSourceConfiguration .from(ConfigMap.class, MultipleSecondaryEventSourceCustomResource.class) .withInformerConfiguration(c -> c .withNamespaces(context.getControllerConfiguration().getNamespaces()) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiversioncrd/MultiVersionCRDTestReconciler1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiversioncrd/MultiVersionCRDTestReconciler1.java index e84e537925..a9b3af7586 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiversioncrd/MultiVersionCRDTestReconciler1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiversioncrd/MultiVersionCRDTestReconciler1.java @@ -3,13 +3,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; -@ControllerConfiguration(informerConfig = @InformerConfig(labelSelector = "!version")) +@ControllerConfiguration(informer = @Informer(labelSelector = "!version")) public class MultiVersionCRDTestReconciler1 implements Reconciler { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiversioncrd/MultiVersionCRDTestReconciler2.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiversioncrd/MultiVersionCRDTestReconciler2.java index 262e66c37c..29d7e830fa 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiversioncrd/MultiVersionCRDTestReconciler2.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiversioncrd/MultiVersionCRDTestReconciler2.java @@ -3,13 +3,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; -@ControllerConfiguration(informerConfig = @InformerConfig(labelSelector = "version in (v2)")) +@ControllerConfiguration(informer = @Informer(labelSelector = "version in (v2)")) public class MultiVersionCRDTestReconciler2 implements Reconciler { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/primaryindexer/PrimaryIndexerTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/primaryindexer/PrimaryIndexerTestReconciler.java index 0c6318f0a9..d03cc0fcb0 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/primaryindexer/PrimaryIndexerTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/primaryindexer/PrimaryIndexerTestReconciler.java @@ -4,7 +4,7 @@ import java.util.stream.Collectors; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; import io.javaoperatorsdk.operator.processing.event.ResourceID; @@ -22,7 +22,8 @@ public List> prepareEventSource context.getPrimaryCache().addIndexer(CONFIG_MAP_RELATION_INDEXER, indexer); var informerConfiguration = - InformerConfiguration.from(ConfigMap.class, PrimaryIndexerTestCustomResource.class) + InformerEventSourceConfiguration + .from(ConfigMap.class, PrimaryIndexerTestCustomResource.class) .withSecondaryToPrimaryMapper( (ConfigMap secondaryResource) -> context .getPrimaryCache() diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/primarytosecondary/JobReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/primarytosecondary/JobReconciler.java index 2503b9b54c..b0f369817e 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/primarytosecondary/JobReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/primarytosecondary/JobReconciler.java @@ -6,8 +6,8 @@ import java.util.stream.Collectors; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; import io.javaoperatorsdk.operator.processing.event.ResourceID; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.PrimaryToSecondaryMapper; @@ -65,14 +65,14 @@ public List> prepareEventSources(EventSourceContext con context.getPrimaryCache().addIndexer(JOB_CLUSTER_INDEX, (job -> List .of(indexKey(job.getSpec().getClusterName(), job.getMetadata().getNamespace())))); - InformerConfiguration.InformerConfigurationBuilder informerConfiguration = - InformerConfiguration.from(Cluster.class, Job.class) + InformerEventSourceConfiguration.Builder informerConfiguration = + InformerEventSourceConfiguration.from(Cluster.class, Job.class) .withSecondaryToPrimaryMapper(cluster -> context.getPrimaryCache() .byIndex(JOB_CLUSTER_INDEX, indexKey(cluster.getMetadata().getName(), cluster.getMetadata().getNamespace())) .stream().map(ResourceID::fromResource).collect(Collectors.toSet())) .withInformerConfiguration( - InformerConfigHolder.Builder::withNamespacesInheritedFromController); + InformerConfiguration.Builder::withNamespacesInheritedFromController); if (addPrimaryToSecondaryMapper) { informerConfiguration = informerConfiguration.withPrimaryToSecondaryMapper( @@ -102,6 +102,7 @@ public boolean isErrorOccurred() { return errorOccurred; } + @SuppressWarnings("UnusedReturnValue") public JobReconciler setGetResourceDirectlyFromCache(boolean getResourceDirectlyFromCache) { this.getResourceDirectlyFromCache = getResourceDirectlyFromCache; return this; diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/BaseConfigurationServiceTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/BaseConfigurationServiceTest.java index 1d0f130a39..43309446fb 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/BaseConfigurationServiceTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/BaseConfigurationServiceTest.java @@ -19,6 +19,7 @@ import io.javaoperatorsdk.operator.api.config.dependent.ConfigurationConverter; import io.javaoperatorsdk.operator.api.config.dependent.Configured; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Constants; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; @@ -32,7 +33,6 @@ import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ConfiguredDependentResource; import io.javaoperatorsdk.operator.dependent.readonly.ReadOnlyDependent; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig; import io.javaoperatorsdk.operator.processing.event.rate.LinearRateLimiter; @@ -252,7 +252,7 @@ public UpdateControl reconcile(ConfigMap resource, Context @Workflow(dependents = @Dependent(type = ReadOnlyDependent.class)) @ControllerConfiguration( - informerConfig = @InformerConfig(namespaces = OneDepReconciler.CONFIGURED_NS)) + informer = @Informer(namespaces = OneDepReconciler.CONFIGURED_NS)) private static class OneDepReconciler implements Reconciler { private static final String CONFIGURED_NS = "foo"; diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentfilter/DependentFilterTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentfilter/DependentFilterTestReconciler.java index 9eae636cf2..2351512046 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentfilter/DependentFilterTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentfilter/DependentFilterTestReconciler.java @@ -2,12 +2,12 @@ import java.util.concurrent.atomic.AtomicInteger; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; @Workflow(dependents = {@Dependent(type = FilteredDependentConfigMap.class)}) -@ControllerConfiguration(informerConfig = @InformerConfig(onUpdateFilter = UpdateFilter.class)) +@ControllerConfiguration(informer = @Informer(onUpdateFilter = UpdateFilter.class)) public class DependentFilterTestReconciler implements Reconciler { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentfilter/FilteredDependentConfigMap.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentfilter/FilteredDependentConfigMap.java index a8548f6e70..7cbb60c583 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentfilter/FilteredDependentConfigMap.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentfilter/FilteredDependentConfigMap.java @@ -4,14 +4,14 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; import static io.javaoperatorsdk.operator.dependent.dependentfilter.DependentFilterTestReconciler.CM_VALUE_KEY; -@KubernetesDependent(informerConfig = @InformerConfig(onUpdateFilter = UpdateFilter.class)) +@KubernetesDependent(informer = @Informer(onUpdateFilter = UpdateFilter.class)) public class FilteredDependentConfigMap extends CRUDKubernetesDependentResource { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentoperationeventfiltering/DependentOperationEventFilterCustomResourceTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentoperationeventfiltering/DependentOperationEventFilterCustomResourceTestReconciler.java index 6f4f6b25b2..3149d1c6d0 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentoperationeventfiltering/DependentOperationEventFilterCustomResourceTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/dependentoperationeventfiltering/DependentOperationEventFilterCustomResourceTestReconciler.java @@ -2,16 +2,16 @@ import java.util.concurrent.atomic.AtomicInteger; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Workflow(dependents = { @Dependent(type = ConfigMapDependentResource.class) }) @ControllerConfiguration( - informerConfig = @InformerConfig(namespaces = Constants.WATCH_CURRENT_NAMESPACE)) + informer = @Informer(namespaces = Constants.WATCH_CURRENT_NAMESPACE)) public class DependentOperationEventFilterCustomResourceTestReconciler implements Reconciler, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateDependentReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateDependentReconciler.java index a9e677ebaf..9140f40587 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateDependentReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateDependentReconciler.java @@ -4,7 +4,7 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @@ -37,7 +37,8 @@ public int getNumberOfExecutions() { public List> prepareEventSources( EventSourceContext context) { var configMapEventSource = new InformerEventSource<>( - InformerConfiguration.from(ConfigMap.class, ExternalStateCustomResource.class).build(), + InformerEventSourceConfiguration.from(ConfigMap.class, ExternalStateCustomResource.class) + .build(), context); return List.of(configMapEventSource); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateReconciler.java index 422592b4d3..5fb2932152 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateReconciler.java @@ -11,7 +11,7 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Cleaner; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; @@ -111,7 +111,8 @@ public List> prepareEventSources( EventSourceContext context) { configMapEventSource = new InformerEventSource<>( - InformerConfiguration.from(ConfigMap.class, ExternalStateCustomResource.class).build(), + InformerEventSourceConfiguration.from(ConfigMap.class, ExternalStateCustomResource.class) + .build(), context); configMapEventSource.setEventSourcePriority(EventSourceStartPriority.RESOURCE_STATE_LOADER); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/externalstatebulkdependent/ExternalStateBulkDependentReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/externalstatebulkdependent/ExternalStateBulkDependentReconciler.java index 3d49b58077..2e0f672c79 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/externalstatebulkdependent/ExternalStateBulkDependentReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/externalstatebulkdependent/ExternalStateBulkDependentReconciler.java @@ -4,7 +4,7 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @@ -36,7 +36,8 @@ public int getNumberOfExecutions() { public List> prepareEventSources( EventSourceContext context) { var configMapEventSource = new InformerEventSource<>( - InformerConfiguration.from(ConfigMap.class, ExternalStateBulkDependentCustomResource.class) + InformerEventSourceConfiguration + .from(ConfigMap.class, ExternalStateBulkDependentCustomResource.class) .build(), context); return List.of(configMapEventSource); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/informerrelatedbehavior/ConfigMapDependentResource.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/informerrelatedbehavior/ConfigMapDependentResource.java index dd55f16ca1..37e109e8de 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/informerrelatedbehavior/ConfigMapDependentResource.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/informerrelatedbehavior/ConfigMapDependentResource.java @@ -5,12 +5,12 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -@KubernetesDependent(informerConfig = @InformerConfig(labelSelector = "app=rbac-test")) +@KubernetesDependent(informer = @Informer(labelSelector = "app=rbac-test")) public class ConfigMapDependentResource extends CRUDKubernetesDependentResource { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledependentresource/MultipleDependentResourceReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledependentresource/MultipleDependentResourceReconciler.java index 91a889ac87..aeac786cda 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledependentresource/MultipleDependentResourceReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledependentresource/MultipleDependentResourceReconciler.java @@ -3,7 +3,7 @@ import java.util.List; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; @@ -36,7 +36,7 @@ public UpdateControl reconcile( public List> prepareEventSources( EventSourceContext context) { InformerEventSource eventSource = - new InformerEventSource<>(InformerConfiguration + new InformerEventSource<>(InformerEventSourceConfiguration .from(ConfigMap.class, MultipleDependentResourceCustomResource.class) .build(), context); firstDependentResourceConfigMap.setEventSource(eventSource); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledependentresourcewithsametype/MultipleDependentResourceWithDiscriminatorReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledependentresourcewithsametype/MultipleDependentResourceWithDiscriminatorReconciler.java index 3d75109a05..c96033d9bc 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledependentresourcewithsametype/MultipleDependentResourceWithDiscriminatorReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledependentresourcewithsametype/MultipleDependentResourceWithDiscriminatorReconciler.java @@ -4,7 +4,7 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; @@ -46,7 +46,7 @@ public int getNumberOfExecutions() { public List> prepareEventSources( EventSourceContext context) { InformerEventSource eventSource = - new InformerEventSource<>(InformerConfiguration.from(ConfigMap.class, + new InformerEventSource<>(InformerEventSourceConfiguration.from(ConfigMap.class, MultipleDependentResourceCustomResourceNoDiscriminator.class) .build(), context); firstDependentResourceConfigMap.setEventSource(eventSource); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledrsametypenodiscriminator/MultipleManagedDependentSameTypeNoDiscriminatorReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledrsametypenodiscriminator/MultipleManagedDependentSameTypeNoDiscriminatorReconciler.java index 16492569c6..09c0b5cc23 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledrsametypenodiscriminator/MultipleManagedDependentSameTypeNoDiscriminatorReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledrsametypenodiscriminator/MultipleManagedDependentSameTypeNoDiscriminatorReconciler.java @@ -4,7 +4,7 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @@ -50,7 +50,7 @@ public List context) { InformerEventSource ies = new InformerEventSource<>( - InformerConfiguration.from(ConfigMap.class, + InformerEventSourceConfiguration.from(ConfigMap.class, MultipleManagedDependentNoDiscriminatorCustomResource.class) .withName(CONFIG_MAP_EVENT_SOURCE) .build(), diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multiplemanageddependentsametype/MultipleManagedDependentResourceReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multiplemanageddependentsametype/MultipleManagedDependentResourceReconciler.java index 94b152fba2..f25587b2ee 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multiplemanageddependentsametype/MultipleManagedDependentResourceReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multiplemanageddependentsametype/MultipleManagedDependentResourceReconciler.java @@ -4,7 +4,7 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @@ -50,7 +50,7 @@ public List> prep EventSourceContext context) { InformerEventSource ies = new InformerEventSource<>( - InformerConfiguration + InformerEventSourceConfiguration .from(ConfigMap.class, MultipleManagedDependentResourceCustomResource.class) .withName(CONFIG_MAP_EVENT_SOURCE) .build(), diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/primaryindexer/DependentPrimaryIndexerTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/primaryindexer/DependentPrimaryIndexerTestReconciler.java index 2730d743cb..bb97a32cf9 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/primaryindexer/DependentPrimaryIndexerTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/primaryindexer/DependentPrimaryIndexerTestReconciler.java @@ -6,7 +6,7 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; @@ -40,7 +40,8 @@ public List> prepareEventSource InformerEventSource es = new InformerEventSource<>( - InformerConfiguration.from(ConfigMap.class, PrimaryIndexerTestCustomResource.class) + InformerEventSourceConfiguration + .from(ConfigMap.class, PrimaryIndexerTestCustomResource.class) .withName(CONFIG_MAP_EVENT_SOURCE) .withSecondaryToPrimaryMapper(resource -> cache .byIndex(CONFIG_MAP_RELATION_INDEXER, resource.getMetadata().getName()) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/primarytosecondaydependent/PrimaryToSecondaryDependentReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/primarytosecondaydependent/PrimaryToSecondaryDependentReconciler.java index 5e011b7247..76e2015be8 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/primarytosecondaydependent/PrimaryToSecondaryDependentReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/primarytosecondaydependent/PrimaryToSecondaryDependentReconciler.java @@ -6,7 +6,7 @@ import java.util.stream.Collectors; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.processing.event.ResourceID; @@ -66,7 +66,7 @@ public List> prepareEv context.getPrimaryCache().addIndexer(CONFIG_MAP_INDEX, (primary -> List .of(indexKey(primary.getSpec().getConfigMapName(), primary.getMetadata().getNamespace())))); - var es = new InformerEventSource<>(InformerConfiguration + var es = new InformerEventSource<>(InformerEventSourceConfiguration .from(ConfigMap.class, PrimaryToSecondaryDependentCustomResource.class) .withName(CONFIG_MAP_EVENT_SOURCE) // if there is a many-to-many relationship (thus no direct owner reference) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/restart/ConfigMapDependentResource.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/restart/ConfigMapDependentResource.java index b531a83beb..b7e69febd1 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/restart/ConfigMapDependentResource.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/restart/ConfigMapDependentResource.java @@ -5,12 +5,12 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -@KubernetesDependent(informerConfig = @InformerConfig(labelSelector = "app=restart-test")) +@KubernetesDependent(informer = @Informer(labelSelector = "app=restart-test")) public class ConfigMapDependentResource extends CRUDKubernetesDependentResource { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/specialresourcesdependent/SpecialResourceTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/specialresourcesdependent/SpecialResourceTestReconciler.java index e10571396e..7d2720c5c2 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/specialresourcesdependent/SpecialResourceTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/specialresourcesdependent/SpecialResourceTestReconciler.java @@ -2,16 +2,16 @@ import java.util.concurrent.atomic.AtomicInteger; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Workflow(dependents = { @Dependent(type = ServiceAccountDependentResource.class), }) @ControllerConfiguration( - informerConfig = @InformerConfig(namespaces = Constants.WATCH_CURRENT_NAMESPACE)) + informer = @Informer(namespaces = Constants.WATCH_CURRENT_NAMESPACE)) public class SpecialResourceTestReconciler implements Reconciler, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/complexdependent/ComplexWorkflowReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/complexdependent/ComplexWorkflowReconciler.java index 249c749003..bab93d032e 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/complexdependent/ComplexWorkflowReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/complexdependent/ComplexWorkflowReconciler.java @@ -5,7 +5,7 @@ import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.apps.StatefulSet; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @@ -59,13 +59,15 @@ public List> prepareEventSources( EventSourceContext context) { InformerEventSource serviceEventSource = new InformerEventSource<>( - InformerConfiguration.from(Service.class, ComplexWorkflowCustomResource.class) + InformerEventSourceConfiguration + .from(Service.class, ComplexWorkflowCustomResource.class) .withName(SERVICE_EVENT_SOURCE_NAME) .build(), context); InformerEventSource statefulSetEventSource = new InformerEventSource<>( - InformerConfiguration.from(StatefulSet.class, ComplexWorkflowCustomResource.class) + InformerEventSourceConfiguration + .from(StatefulSet.class, ComplexWorkflowCustomResource.class) .withName(STATEFUL_SET_EVENT_SOURCE_NAME) .build(), context); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/multipledependentwithactivation/ConfigMapDependentResource1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/multipledependentwithactivation/ConfigMapDependentResource1.java index 085586beaa..a3198a3ca3 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/multipledependentwithactivation/ConfigMapDependentResource1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/multipledependentwithactivation/ConfigMapDependentResource1.java @@ -4,12 +4,12 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDNoGCKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -@KubernetesDependent(informerConfig = @InformerConfig(name = "configMapInformer")) +@KubernetesDependent(informer = @Informer(name = "configMapInformer")) public class ConfigMapDependentResource1 extends CRUDNoGCKubernetesDependentResource { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/multipledependentwithactivation/ConfigMapDependentResource2.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/multipledependentwithactivation/ConfigMapDependentResource2.java index a07b6a925b..5fcead39a2 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/multipledependentwithactivation/ConfigMapDependentResource2.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/multipledependentwithactivation/ConfigMapDependentResource2.java @@ -4,12 +4,12 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDNoGCKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -@KubernetesDependent(informerConfig = @InformerConfig(name = "configMapInformer")) +@KubernetesDependent(informer = @Informer(name = "configMapInformer")) public class ConfigMapDependentResource2 extends CRUDNoGCKubernetesDependentResource { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/ConfigMapDependentResource1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/ConfigMapDependentResource1.java index ac57e05903..0478fe4248 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/ConfigMapDependentResource1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/ConfigMapDependentResource1.java @@ -5,13 +5,13 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMeta; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -@KubernetesDependent(informerConfig = @InformerConfig(labelSelector = "dependent = cm1")) +@KubernetesDependent(informer = @Informer(labelSelector = "dependent = cm1")) public class ConfigMapDependentResource1 extends CRUDKubernetesDependentResource { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/ConfigMapDependentResource2.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/ConfigMapDependentResource2.java index 1494a0d430..efbd6ec450 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/ConfigMapDependentResource2.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/ConfigMapDependentResource2.java @@ -5,13 +5,13 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMeta; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -@KubernetesDependent(informerConfig = @InformerConfig(labelSelector = "dependent = cm2")) +@KubernetesDependent(informer = @Informer(labelSelector = "dependent = cm2")) public class ConfigMapDependentResource2 extends CRUDKubernetesDependentResource { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/OrderedManagedDependentTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/OrderedManagedDependentTestReconciler.java index a78b02c056..4336d940b0 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/OrderedManagedDependentTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/orderedmanageddependent/OrderedManagedDependentTestReconciler.java @@ -5,9 +5,9 @@ import java.util.List; import java.util.concurrent.atomic.AtomicInteger; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Workflow(dependents = { @@ -15,7 +15,7 @@ @Dependent(type = ConfigMapDependentResource2.class, dependsOn = "cm1") }) @ControllerConfiguration( - informerConfig = @InformerConfig(namespaces = Constants.WATCH_CURRENT_NAMESPACE)) + informer = @Informer(namespaces = Constants.WATCH_CURRENT_NAMESPACE)) public class OrderedManagedDependentTestReconciler implements Reconciler, TestExecutionInfoProvider { diff --git a/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java b/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java index e0425235fb..d6eaad24bb 100644 --- a/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java +++ b/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java @@ -4,12 +4,12 @@ import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; import io.javaoperatorsdk.operator.ReconcilerUtils; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -@KubernetesDependent(informerConfig = @InformerConfig( +@KubernetesDependent(informer = @Informer( labelSelector = "app.kubernetes.io/managed-by=tomcat-operator")) public class DeploymentDependentResource extends CRUDKubernetesDependentResource { diff --git a/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java b/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java index 56f3330a45..8a93b48804 100644 --- a/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java +++ b/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java @@ -4,12 +4,12 @@ import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServiceBuilder; import io.javaoperatorsdk.operator.ReconcilerUtils; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -@KubernetesDependent(informerConfig = @InformerConfig( +@KubernetesDependent(informer = @Informer( labelSelector = "app.kubernetes.io/managed-by=tomcat-operator")) public class ServiceDependentResource extends CRUDKubernetesDependentResource { diff --git a/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java b/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java index 00bd5614fa..82d0152b3c 100644 --- a/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java +++ b/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java @@ -19,7 +19,7 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.dsl.ExecListener; import io.fabric8.kubernetes.client.dsl.ExecWatch; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Cleaner; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; @@ -58,8 +58,8 @@ public List> prepareEventSources(EventSourceContext configuration = - InformerConfiguration.from(Tomcat.class, Webapp.class) + InformerEventSourceConfiguration configuration = + InformerEventSourceConfiguration.from(Tomcat.class, Webapp.class) .withSecondaryToPrimaryMapper(webappsMatchingTomcatName) .withPrimaryToSecondaryMapper( (Webapp primary) -> Set.of(new ResourceID(primary.getSpec().getTomcat(), diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageDependentsWorkflowReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageDependentsWorkflowReconciler.java index 4eb1a1c0a3..b38f48b912 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageDependentsWorkflowReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageDependentsWorkflowReconciler.java @@ -8,9 +8,9 @@ import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.fabric8.kubernetes.client.KubernetesClient; +import io.javaoperatorsdk.operator.api.config.informer.Informer; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfigBuilder; import io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow; @@ -25,7 +25,7 @@ * Shows how to implement reconciler using standalone dependent resources. */ @ControllerConfiguration( - informerConfig = @InformerConfig( + informer = @Informer( labelSelector = WebPageDependentsWorkflowReconciler.DEPENDENT_RESOURCE_LABEL_SELECTOR)) @SuppressWarnings("unused") public class WebPageDependentsWorkflowReconciler @@ -85,7 +85,7 @@ private void initDependentResources(KubernetesClient client) { Arrays.asList(configMapDR, deploymentDR, serviceDR, ingressDR) .forEach(dr -> dr.configureWith(new KubernetesDependentResourceConfigBuilder() - .withKubernetesDependentInformerConfig(InformerConfigHolder.builder() + .withKubernetesDependentInformerConfig(InformerConfiguration.builder() .withLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR) .buildForInformerEventSource()) .build())); diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java index 6cb199b0fc..56b66fbfb3 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java @@ -13,7 +13,7 @@ import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.javaoperatorsdk.operator.ReconcilerUtils; -import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; +import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.event.rate.RateLimited; @@ -41,21 +41,29 @@ public WebPageReconciler() { @Override public List> prepareEventSources(EventSourceContext context) { var configMapEventSource = - new InformerEventSource<>(InformerConfiguration.from(ConfigMap.class, WebPage.class) - .withInformerConfiguration(c -> c.withLabelSelector(SELECTOR)) - .build(), context); + new InformerEventSource<>( + InformerEventSourceConfiguration.from(ConfigMap.class, WebPage.class) + .withInformerConfiguration(c -> c.withLabelSelector(SELECTOR)) + .build(), + context); var deploymentEventSource = - new InformerEventSource<>(InformerConfiguration.from(Deployment.class, WebPage.class) - .withInformerConfiguration(c -> c.withLabelSelector(SELECTOR)) - .build(), context); + new InformerEventSource<>( + InformerEventSourceConfiguration.from(Deployment.class, WebPage.class) + .withInformerConfiguration(c -> c.withLabelSelector(SELECTOR)) + .build(), + context); var serviceEventSource = - new InformerEventSource<>(InformerConfiguration.from(Service.class, WebPage.class) - .withInformerConfiguration(c -> c.withLabelSelector(SELECTOR)) - .build(), context); + new InformerEventSource<>( + InformerEventSourceConfiguration.from(Service.class, WebPage.class) + .withInformerConfiguration(c -> c.withLabelSelector(SELECTOR)) + .build(), + context); var ingressEventSource = - new InformerEventSource<>(InformerConfiguration.from(Ingress.class, WebPage.class) - .withInformerConfiguration(c -> c.withLabelSelector(SELECTOR)) - .build(), context); + new InformerEventSource<>( + InformerEventSourceConfiguration.from(Ingress.class, WebPage.class) + .withInformerConfiguration(c -> c.withLabelSelector(SELECTOR)) + .build(), + context); return List.of(configMapEventSource, deploymentEventSource, serviceEventSource, ingressEventSource); } diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java index 0b8d44fe22..e7930a3658 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java @@ -4,6 +4,7 @@ import java.util.List; import io.fabric8.kubernetes.api.model.ConfigMap; +import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusUpdateControl; @@ -11,7 +12,6 @@ import io.javaoperatorsdk.operator.api.reconciler.EventSourceUtils; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfigBuilder; import io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow; import io.javaoperatorsdk.operator.processing.dependent.workflow.WorkflowBuilder; @@ -96,7 +96,7 @@ private Workflow createDependentResourcesAndWorkflow() { // configure them with our label selector Arrays.asList(configMapDR, deploymentDR, serviceDR, ingressDR) .forEach(dr -> dr.configureWith(new KubernetesDependentResourceConfigBuilder() - .withKubernetesDependentInformerConfig(InformerConfigHolder.builder() + .withKubernetesDependentInformerConfig(InformerConfiguration.builder() .withLabelSelector(SELECTOR + "=true") .buildForInformerEventSource()) .build())); diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/ConfigMapDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/ConfigMapDependentResource.java index aa03aaabca..816db3688e 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/ConfigMapDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/ConfigMapDependentResource.java @@ -6,9 +6,9 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; import io.javaoperatorsdk.operator.sample.customresource.WebPage; @@ -16,7 +16,7 @@ import static io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler.SELECTOR; // this annotation only activates when using managed dependents and is not otherwise needed -@KubernetesDependent(informerConfig = @InformerConfig(labelSelector = SELECTOR)) +@KubernetesDependent(informer = @Informer(labelSelector = SELECTOR)) public class ConfigMapDependentResource extends CRUDKubernetesDependentResource { diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/DeploymentDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/DeploymentDependentResource.java index 3aa90bf54c..b427e42d33 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/DeploymentDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/DeploymentDependentResource.java @@ -5,9 +5,9 @@ import io.fabric8.kubernetes.api.model.ConfigMapVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; import io.javaoperatorsdk.operator.sample.Utils; import io.javaoperatorsdk.operator.sample.customresource.WebPage; @@ -18,7 +18,7 @@ import static io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler.SELECTOR; // this annotation only activates when using managed dependents and is not otherwise needed -@KubernetesDependent(informerConfig = @InformerConfig(labelSelector = SELECTOR)) +@KubernetesDependent(informer = @Informer(labelSelector = SELECTOR)) public class DeploymentDependentResource extends CRUDKubernetesDependentResource { diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/IngressDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/IngressDependentResource.java index abfe9a13f5..e680d10fcf 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/IngressDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/IngressDependentResource.java @@ -1,9 +1,9 @@ package io.javaoperatorsdk.operator.sample.dependentresource; import io.fabric8.kubernetes.api.model.networking.v1.Ingress; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; import io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler; import io.javaoperatorsdk.operator.sample.customresource.WebPage; @@ -12,7 +12,7 @@ // this annotation only activates when using managed dependents and is not otherwise needed @KubernetesDependent( - informerConfig = @InformerConfig(labelSelector = WebPageManagedDependentsReconciler.SELECTOR)) + informer = @Informer(labelSelector = WebPageManagedDependentsReconciler.SELECTOR)) public class IngressDependentResource extends CRUDKubernetesDependentResource { public IngressDependentResource() { diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/ServiceDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/ServiceDependentResource.java index 2669fe5f97..ff9e7a1a52 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/ServiceDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependentresource/ServiceDependentResource.java @@ -4,8 +4,8 @@ import java.util.Map; import io.fabric8.kubernetes.api.model.Service; +import io.javaoperatorsdk.operator.api.config.informer.Informer; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; import io.javaoperatorsdk.operator.sample.Utils; import io.javaoperatorsdk.operator.sample.customresource.WebPage; @@ -16,7 +16,7 @@ import static io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler.SELECTOR; // this annotation only activates when using managed dependents and is not otherwise needed -@KubernetesDependent(informerConfig = @InformerConfig(labelSelector = SELECTOR)) +@KubernetesDependent(informer = @Informer(labelSelector = SELECTOR)) public class ServiceDependentResource extends io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource {