Skip to content

Commit

Permalink
refactor: clean up informer configuration classes (#2470)
Browse files Browse the repository at this point in the history
* chore: set version to 5.0.0-SNAPSHOT (#2200)

Signed-off-by: Attila Mészáros <csviri@gmail.com>

* improve: replace current formatting plugins with spotless plugin  (#2302)

Signed-off-by: Attila Mészáros <csviri@gmail.com>

* fix: format after rebase

Signed-off-by: Attila Mészáros <csviri@gmail.com>

* bump: chore use slf4j v2 (#2406)

Signed-off-by: Attila Mészáros <csviri@gmail.com>

* feat: allow returning additional information from conditions (#2426)

Fixes #2424.

---------

Signed-off-by: Attila Mészáros <csviri@gmail.com>
Signed-off-by: Chris Laprun <claprun@redhat.com>
Co-authored-by: Attila Mészáros <csviri@gmail.com>
Signed-off-by: Chris Laprun <claprun@redhat.com>

* refactor: move @InformerConfig to more appropriate package

Signed-off-by: Chris Laprun <claprun@redhat.com>

* refactor: move InformerConfigHolder to appropriate package

Signed-off-by: Chris Laprun <claprun@redhat.com>

* chore: remove unneeded code & dependencies

Signed-off-by: Chris Laprun <claprun@redhat.com>

* refactor: InformerConfiguration to InformerEventSourceConfiguration

Signed-off-by: Chris Laprun <claprun@redhat.com>

* refactor: rename inner InformerConfigurationBuilder to simply Builder

Signed-off-by: Chris Laprun <claprun@redhat.com>

* refactor: rename InformerConfig and associated field to Informer

Signed-off-by: Chris Laprun <claprun@redhat.com>

* refactor: rename InformerConfigHolder to InformerConfiguration

Signed-off-by: Chris Laprun <claprun@redhat.com>

---------

Signed-off-by: Attila Mészáros <csviri@gmail.com>
Signed-off-by: Chris Laprun <claprun@redhat.com>
Co-authored-by: Attila Mészáros <csviri@gmail.com>
  • Loading branch information
metacosm and csviri committed Aug 9, 2024
1 parent 02b876b commit a6621c2
Show file tree
Hide file tree
Showing 75 changed files with 673 additions and 652 deletions.
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -77,12 +77,14 @@ public List<EventSource<?, P>> 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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -275,8 +275,8 @@ private <P extends HasMetadata> ResolvedControllerConfiguration<P> controllerCon
fieldManager.equals(CONTROLLER_NAME_AS_FIELD_MANAGER) ? name
: fieldManager;

InformerConfigHolder<P> informerConfig = InformerConfigHolder.builder(resourceClass)
.initFromAnnotation(annotation != null ? annotation.informerConfig() : null, context)
InformerConfiguration<P> informerConfig = InformerConfiguration.builder(resourceClass)
.initFromAnnotation(annotation != null ? annotation.informer() : null, context)
.buildForController();

return new ResolvedControllerConfiguration<P>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -30,12 +30,12 @@ public class ControllerConfigurationOverrider<R extends HasMetadata> {
private String fieldManager;
private Duration reconciliationMaxInterval;
private Map<DependentResourceSpec, Object> configurations;
private final InformerConfigHolder<R>.Builder config;
private final InformerConfiguration<R>.Builder config;

private ControllerConfigurationOverrider(ControllerConfiguration<R> 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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<R extends HasMetadata>
implements ResourceConfiguration<R> {

private final Class<R> resourceClass;
private final String resourceTypeName;
private final InformerConfigHolder<R> informerConfig;
private final InformerConfiguration<R> informerConfig;

protected DefaultResourceConfiguration(Class<R> resourceClass,
InformerConfigHolder<R> informerConfig) {
InformerConfiguration<R> 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
Expand All @@ -35,7 +35,7 @@ public Class<R> getResourceClass() {
}

@Override
public InformerConfigHolder<R> getInformerConfig() {
public InformerConfiguration<R> getInformerConfig() {
return informerConfig;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -49,7 +49,7 @@ public ResolvedControllerConfiguration(Class<P> resourceClass, String name,
Map<DependentResourceSpec, Object> configurations,
String fieldManager,
ConfigurationService configurationService,
InformerConfigHolder<P> informerConfig,
InformerConfiguration<P> informerConfig,
WorkflowSpec workflowSpec) {
this(resourceClass, name, generationAware, associatedReconcilerClassName, retry, rateLimiter,
maxReconciliationInterval, finalizer, configurations, fieldManager,
Expand All @@ -62,7 +62,7 @@ protected ResolvedControllerConfiguration(Class<P> resourceClass, String name,
RateLimiter rateLimiter, Duration maxReconciliationInterval, String finalizer,
Map<DependentResourceSpec, Object> configurations,
String fieldManager,
ConfigurationService configurationService, InformerConfigHolder<P> informerConfig) {
ConfigurationService configurationService, InformerConfiguration<P> informerConfig) {
super(resourceClass, informerConfig);
this.configurationService = configurationService;
this.name = ControllerConfiguration.ensureValidName(name, associatedReconcilerClassName);
Expand All @@ -81,7 +81,7 @@ protected ResolvedControllerConfiguration(Class<P> resourceClass, String name,
Class<? extends Reconciler> 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -26,7 +26,7 @@ default String getResourceTypeName() {
return ReconcilerUtils.getResourceTypeName(getResourceClass());
}

InformerConfigHolder<R> getInformerConfig();
InformerConfiguration<R> getInformerConfig();

default Optional<OnAddFilter<? super R>> onAddFilter() {
return Optional.ofNullable(getInformerConfig().getOnAddFilter());
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;

Expand Down
Loading

0 comments on commit a6621c2

Please sign in to comment.