Skip to content

Commit 59a3ed7

Browse files
committed
fix: make dependent sources proper ResourceEventSources
1 parent 64f3bfc commit 59a3ed7

File tree

3 files changed

+60
-66
lines changed

3 files changed

+60
-66
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
2525
import io.javaoperatorsdk.operator.processing.event.EventSourceManager;
2626
import io.javaoperatorsdk.operator.processing.event.source.AbstractResourceEventSource;
27+
import io.javaoperatorsdk.operator.processing.event.source.DependentResourceEventSource;
2728
import io.javaoperatorsdk.operator.processing.event.source.EventSourceRegistry;
2829
import io.javaoperatorsdk.operator.processing.event.source.EventSourceWrapper;
29-
import io.javaoperatorsdk.operator.processing.event.source.InformerEventSourceEventSourceWrapper;
3030
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventFilter;
3131

3232
public class Controller<R extends HasMetadata> implements Reconciler<R>,
@@ -143,7 +143,7 @@ public UpdateControl<R> execute() {
143143
public void prepareEventSources(EventSourceRegistry<R> eventSourceRegistry, Cloner cloner) {
144144
configuration.getDependentResources().forEach(dependent -> {
145145
final var dependentConfiguration = dependent.getConfiguration();
146-
final var source = new AbstractResourceEventSource<>(dependentConfiguration,
146+
new AbstractResourceEventSource<>(dependentConfiguration,
147147
kubernetesClient.resources(dependentConfiguration.getResourceClass()), cloner,
148148
eventSourceRegistry) {
149149
@Override
@@ -154,14 +154,12 @@ protected ResourceEventFilter initFilter(ResourceConfiguration configuration) {
154154
@Override
155155
protected EventSourceWrapper wrapEventSource(
156156
FilterWatchListDeletable filteredBySelectorClient, Cloner cloner) {
157-
return new InformerEventSourceEventSourceWrapper(filteredBySelectorClient, cloner,
158-
dependentConfiguration.getPrimaryResourcesRetriever(),
159-
dependentConfiguration.getAssociatedResourceRetriever(),
160-
dependentConfiguration.skipUpdateIfUnchanged(),
161-
eventSourceRegistry);
157+
final var source = new DependentResourceEventSource(filteredBySelectorClient, cloner,
158+
dependentConfiguration);
159+
eventSourceRegistry.registerEventSource(source);
160+
return source;
162161
}
163162
};
164-
eventSourceRegistry.registerEventSource(source);
165163
});
166164

167165
if (reconciler instanceof EventSourceInitializer) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package io.javaoperatorsdk.operator.processing.event.source;
2+
3+
import java.util.Optional;
4+
import java.util.function.Predicate;
5+
import java.util.stream.Stream;
6+
7+
import io.fabric8.kubernetes.api.model.HasMetadata;
8+
import io.fabric8.kubernetes.api.model.KubernetesResourceList;
9+
import io.fabric8.kubernetes.client.dsl.FilterWatchListDeletable;
10+
import io.javaoperatorsdk.operator.api.config.Cloner;
11+
import io.javaoperatorsdk.operator.api.config.ResourceConfiguration;
12+
import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceConfiguration;
13+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
14+
15+
public class DependentResourceEventSource<T extends HasMetadata, P extends HasMetadata>
16+
extends InformerEventSource<T, P>
17+
implements EventSourceWrapper<T>, ResourceEventSource<T, P> {
18+
private final DependentResourceConfiguration<T, P> configuration;
19+
20+
public DependentResourceEventSource(
21+
FilterWatchListDeletable<T, KubernetesResourceList<T>> client,
22+
Cloner cloner, DependentResourceConfiguration<T, P> dependentConfiguration) {
23+
super(client.runnableInformer(0),
24+
dependentConfiguration.getPrimaryResourcesRetriever(),
25+
dependentConfiguration.getAssociatedResourceRetriever(),
26+
dependentConfiguration.skipUpdateIfUnchanged(), cloner);
27+
this.configuration = dependentConfiguration;
28+
}
29+
30+
@Override
31+
public Optional<T> get(ResourceID resourceID) {
32+
return getCache().get(resourceID);
33+
}
34+
35+
@Override
36+
public Stream<T> list(Predicate<T> predicate) {
37+
return getCache().list(predicate);
38+
}
39+
40+
@Override
41+
public Stream<T> list(String namespace, Predicate<T> predicate) {
42+
return getCache().list(namespace, predicate);
43+
}
44+
45+
@Override
46+
public ResourceCache<T> getResourceCache() {
47+
return getCache();
48+
}
49+
50+
@Override
51+
public ResourceConfiguration<T, ? extends ResourceConfiguration> getConfiguration() {
52+
return configuration;
53+
}
54+
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/InformerEventSourceEventSourceWrapper.java

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)