Skip to content

improve: remove deprecated EventFilter #2208

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition;
import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter;
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter;
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilters;
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.OnUpdateFilter;
Expand Down Expand Up @@ -163,40 +161,12 @@ protected <P extends HasMetadata> ControllerConfiguration<P> configFor(Reconcile
Utils.instantiate(annotation.itemStore(), ItemStore.class, context), dependentFieldManager,
this, informerListLimit);

ResourceEventFilter<P> answer = deprecatedEventFilter(annotation);
config.setEventFilter(answer != null ? answer : ResourceEventFilters.passthrough());

List<DependentResourceSpec> specs = dependentResources(annotation, config);
config.setDependentResources(specs);

return config;
}

@SuppressWarnings("unchecked")
private static <P extends HasMetadata> ResourceEventFilter<P> deprecatedEventFilter(
io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration annotation) {
ResourceEventFilter<P> answer = null;

Class<ResourceEventFilter<P>>[] filterTypes =
(Class<ResourceEventFilter<P>>[]) valueOrDefault(annotation,
io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration::eventFilters,
new Object[] {});
for (var filterType : filterTypes) {
try {
ResourceEventFilter<P> filter = filterType.getConstructor().newInstance();

if (answer == null) {
answer = filter;
} else {
answer = answer.and(filter);
}
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
return answer;
}

@SuppressWarnings({"unchecked", "rawtypes"})
private static List<DependentResourceSpec> dependentResources(
io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration annotation,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
import io.javaoperatorsdk.operator.api.reconciler.MaxReconciliationInterval;
import io.javaoperatorsdk.operator.processing.event.rate.LinearRateLimiter;
import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter;
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter;
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilters;
import io.javaoperatorsdk.operator.processing.retry.GenericRetry;
import io.javaoperatorsdk.operator.processing.retry.GradualRetry;
import io.javaoperatorsdk.operator.processing.retry.Retry;
Expand Down Expand Up @@ -83,25 +81,6 @@ default RateLimiter getRateLimiter() {
return DEFAULT_RATE_LIMITER;
}

/**
* Allow controllers to filter events before they are passed to the
* {@link io.javaoperatorsdk.operator.processing.event.EventHandler}.
*
* <p>
* Resource event filters only applies on events of the main custom resource. Not on events from
* other event sources nor the periodic events.
* </p>
*
* @return filter
* @deprecated use {@link ResourceConfiguration#onAddFilter()},
* {@link ResourceConfiguration#onUpdateFilter()} or
* {@link ResourceConfiguration#genericFilter()} instead
*/
@Deprecated(forRemoval = true)
default ResourceEventFilter<P> getEventFilter() {
return ResourceEventFilters.passthrough();
}

@SuppressWarnings("rawtypes")
default List<DependentResourceSpec> getDependentResources() {
return Collections.emptyList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,9 @@
import io.fabric8.kubernetes.client.informers.cache.ItemStore;
import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec;
import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter;
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter;
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.OnUpdateFilter;
import io.javaoperatorsdk.operator.processing.retry.GenericRetry;
import io.javaoperatorsdk.operator.processing.retry.Retry;

import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES_SET;
Expand All @@ -29,7 +27,6 @@ public class ControllerConfigurationOverrider<R extends HasMetadata> {
private Set<String> namespaces;
private Retry retry;
private String labelSelector;
private ResourceEventFilter<R> customResourcePredicate;
private final ControllerConfiguration<R> original;
private Duration reconciliationMaxInterval;
private OnAddFilter<? super R> onAddFilter;
Expand All @@ -48,7 +45,6 @@ private ControllerConfigurationOverrider(ControllerConfiguration<R> original) {
this.namespaces = new HashSet<>(original.getNamespaces());
this.retry = original.getRetry();
this.labelSelector = original.getLabelSelector();
this.customResourcePredicate = original.getEventFilter();
this.reconciliationMaxInterval = original.maxReconciliationInterval().orElse(null);
this.onAddFilter = original.onAddFilter().orElse(null);
this.onUpdateFilter = original.onUpdateFilter().orElse(null);
Expand Down Expand Up @@ -110,17 +106,6 @@ public ControllerConfigurationOverrider<R> watchingAllNamespaces() {
return this;
}

/**
* @param retry configuration
* @return current instance of overrider
* @deprecated Use {@link #withRetry(Retry)} instead
*/
@Deprecated(forRemoval = true)
public ControllerConfigurationOverrider<R> withRetry(RetryConfiguration retry) {
this.retry = GenericRetry.fromConfiguration(retry);
return this;
}

public ControllerConfigurationOverrider<R> withRetry(Retry retry) {
this.retry = retry;
return this;
Expand All @@ -136,12 +121,6 @@ public ControllerConfigurationOverrider<R> withLabelSelector(String labelSelecto
return this;
}

public ControllerConfigurationOverrider<R> withCustomResourcePredicate(
ResourceEventFilter<R> customResourcePredicate) {
this.customResourcePredicate = customResourcePredicate;
return this;
}

public ControllerConfigurationOverrider<R> withReconciliationMaxInterval(
Duration reconciliationMaxInterval) {
this.reconciliationMaxInterval = reconciliationMaxInterval;
Expand Down Expand Up @@ -210,15 +189,13 @@ public ControllerConfigurationOverrider<R> replacingNamedDependentResourceConfig
}

public ControllerConfiguration<R> build() {
final var overridden = new ResolvedControllerConfiguration<>(original.getResourceClass(),
return new ResolvedControllerConfiguration<>(original.getResourceClass(),
name,
generationAware, original.getAssociatedReconcilerClassName(), retry, rateLimiter,
reconciliationMaxInterval, onAddFilter, onUpdateFilter, genericFilter,
original.getDependentResources(),
namespaces, finalizer, labelSelector, configurations, itemStore, fieldManager,
original.getConfigurationService(), informerListLimit);
overridden.setEventFilter(customResourcePredicate);
return overridden;
}

public static <R extends HasMetadata> ControllerConfigurationOverrider<R> override(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter;
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter;
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.OnUpdateFilter;
Expand All @@ -34,7 +33,6 @@ public class ResolvedControllerConfiguration<P extends HasMetadata>
private final ConfigurationService configurationService;
private final String fieldManager;

private ResourceEventFilter<P> eventFilter;
private List<DependentResourceSpec> dependentResources;

public ResolvedControllerConfiguration(Class<P> resourceClass, ControllerConfiguration<P> other) {
Expand Down Expand Up @@ -166,21 +164,6 @@ public ConfigurationService getConfigurationService() {
return configurationService;
}

@Override
public ResourceEventFilter<P> getEventFilter() {
return eventFilter;
}

/**
* @deprecated Use {@link OnAddFilter}, {@link OnUpdateFilter} and {@link GenericFilter} instead
*
* @param eventFilter generic event filter
*/
@Deprecated(forRemoval = true)
protected void setEventFilter(ResourceEventFilter<P> eventFilter) {
this.eventFilter = eventFilter;
}

@Override
public Object getConfigurationFor(DependentResourceSpec spec) {
return configurations.get(spec);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import io.javaoperatorsdk.operator.processing.event.rate.LinearRateLimiter;
import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter;
import io.javaoperatorsdk.operator.processing.event.source.cache.BoundedItemStore;
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter;
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.OnUpdateFilter;
Expand Down Expand Up @@ -64,19 +63,6 @@
*/
String labelSelector() default Constants.NO_VALUE_SET;

/**
* @deprecated Use onAddFilter, onUpdateFilter instead.
*
* <p>
* Resource event filters only applies on events of the main custom resource. Not on
* events from other event sources nor the periodic events.
* </p>
*
* @return the list of event filters.
*/
@Deprecated(forRemoval = true)
Class<? extends ResourceEventFilter>[] eventFilters() default {};

/**
* Filter of onAdd events of resources.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ public class ControllerResourceEventSource<T extends HasMetadata>
private static final Logger log = LoggerFactory.getLogger(ControllerResourceEventSource.class);

private final Controller<T> controller;
private final ResourceEventFilter<T> legacyFilters;

@SuppressWarnings({"unchecked", "rawtypes"})
public ControllerResourceEventSource(Controller<T> controller) {
Expand All @@ -42,8 +41,6 @@ public ControllerResourceEventSource(Controller<T> controller) {
.or(onUpdateGenerationAware(config.isGenerationAware()))
.or(onUpdateMarkedForDeletion());

legacyFilters = config.getEventFilter();

// by default the on add should be processed in all cases regarding internal filters
config.onAddFilter().ifPresent(this::setOnAddFilter);
config.onUpdateFilter()
Expand All @@ -69,9 +66,7 @@ public void eventReceived(ResourceAction action, T resource, T oldResource) {
log.debug("Event received for resource: {}", getName(resource));
MDCUtils.addResourceInfo(resource);
controller.getEventSourceManager().broadcastOnResourceEvent(action, resource, oldResource);
if ((legacyFilters == null ||
legacyFilters.acceptChange(controller, oldResource, resource))
&& isAcceptedByFilters(action, resource, oldResource)) {
if (isAcceptedByFilters(action, resource, oldResource)) {
getEventHandler().handleEvent(
new ResourceEvent(action, ResourceID.fromResource(resource), resource));
} else {
Expand Down

This file was deleted.

This file was deleted.

Loading