Skip to content

Commit ea40b8c

Browse files
committed
Fixes
1 parent 88fbe80 commit ea40b8c

File tree

6 files changed

+36
-15
lines changed

6 files changed

+36
-15
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public EventSourceManager(Controller<P> controller,
4545
this.controller = controller;
4646
this.executorServiceManager = executorServiceManager;
4747
// controller event source needs to be available before we create the event processor
48-
eventSources.initControllerEventSource(controller);
48+
eventSources.createControllerEventSource(controller);
4949

5050

5151
postProcessDefaultEventSourcesAfterProcessorInitializer();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class EventSources<R extends HasMetadata> {
3030
private ControllerResourceEventSource<R> controllerResourceEventSource;
3131

3232

33-
void initControllerEventSource(Controller<R> controller) {
33+
void createControllerEventSource(Controller<R> controller) {
3434
controllerResourceEventSource = new ControllerResourceEventSource<>(controller);
3535
controllerResourceEventSource
3636
.setConfigurationService(controller.getConfiguration().getConfigurationService());

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
11
package io.javaoperatorsdk.operator.processing.event.source.controller;
22

3+
import java.util.List;
4+
import java.util.Map;
35
import java.util.Optional;
46
import java.util.Set;
7+
import java.util.function.Function;
58

69
import org.slf4j.Logger;
710
import org.slf4j.LoggerFactory;
811

912
import io.fabric8.kubernetes.api.model.HasMetadata;
1013
import io.fabric8.kubernetes.client.KubernetesClientException;
1114
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
15+
import io.javaoperatorsdk.operator.api.config.ConfigurationService;
1216
import io.javaoperatorsdk.operator.api.config.ControllerConfiguration;
1317
import io.javaoperatorsdk.operator.processing.Controller;
1418
import io.javaoperatorsdk.operator.processing.MDCUtils;
1519
import io.javaoperatorsdk.operator.processing.event.ResourceID;
1620
import io.javaoperatorsdk.operator.processing.event.source.filter.OnDeleteFilter;
1721
import io.javaoperatorsdk.operator.processing.event.source.filter.OnUpdateFilter;
22+
import io.javaoperatorsdk.operator.processing.event.source.informer.InformerManager;
1823
import io.javaoperatorsdk.operator.processing.event.source.informer.ManagedInformerEventSource;
1924

2025
import static io.javaoperatorsdk.operator.ReconcilerUtils.handleKubernetesClientException;
@@ -131,4 +136,14 @@ public void setOnDeleteFilter(OnDeleteFilter<T> onDeleteFilter) {
131136
throw new IllegalStateException(
132137
"onDeleteFilter is not supported for controller resource event source");
133138
}
139+
140+
@Override
141+
public void addIndexers(Map<String, Function<T, List<String>>> indexers) {
142+
manager().addIndexers(indexers);
143+
}
144+
145+
public void setConfigurationService(ConfigurationService configurationService) {
146+
cache = new InformerManager<>(client, configuration, configurationService, this);
147+
this.configurationService = configurationService;
148+
}
134149
}

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

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.javaoperatorsdk.operator.processing.event.source.informer;
22

3-
import java.util.Optional;
4-
import java.util.Set;
3+
import java.util.*;
4+
import java.util.function.Function;
55
import java.util.stream.Collectors;
66

77
import org.slf4j.Logger;
@@ -10,6 +10,7 @@
1010
import io.fabric8.kubernetes.api.model.HasMetadata;
1111
import io.fabric8.kubernetes.client.KubernetesClient;
1212
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
13+
import io.javaoperatorsdk.operator.api.config.ConfigurationService;
1314
import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
1415
import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext;
1516
import io.javaoperatorsdk.operator.api.reconciler.dependent.RecentOperationEventFilter;
@@ -76,6 +77,7 @@ public class InformerEventSource<R extends HasMetadata, P extends HasMetadata>
7677
// we need direct control for the indexer to propagate the just update resource also to the index
7778
private final PrimaryToSecondaryIndex<R> primaryToSecondaryIndex;
7879
private final PrimaryToSecondaryMapper<P> primaryToSecondaryMapper;
80+
private Map<String, Function<R, List<String>>> indexerBuffer = new HashMap<>();
7981

8082
public InformerEventSource(
8183
InformerConfiguration<R> configuration, EventSourceContext<P> context) {
@@ -338,4 +340,16 @@ private boolean acceptedByDeleteFilters(R resource, boolean b) {
338340
return (onDeleteFilter == null || onDeleteFilter.accept(resource, b)) &&
339341
(genericFilter == null || genericFilter.accept(resource));
340342
}
343+
344+
public void setConfigurationService(ConfigurationService configurationService) {
345+
cache = new InformerManager<>(client, configuration, configurationService, this);
346+
cache.addIndexers(indexerBuffer);
347+
indexerBuffer = null;
348+
this.configurationService = configurationService;
349+
}
350+
351+
public void addIndexers(Map<String, Function<R, List<String>>> indexers) {
352+
indexerBuffer.putAll(indexers);
353+
}
354+
341355
}

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ public abstract class ManagedInformerEventSource<R extends HasMetadata, P extend
4040
protected C configuration;
4141
protected MixedOperation<R, KubernetesResourceList<R>, Resource<R>> client;
4242
protected ConfigurationService configurationService;
43-
protected Map<String, Function<R, List<String>>> indexerBuffer = new HashMap<>();
4443

4544
protected ManagedInformerEventSource(
4645
MixedOperation<R, KubernetesResourceList<R>, Resource<R>> client, C configuration) {
@@ -128,9 +127,7 @@ void setTemporalResourceCache(TemporaryResourceCache<R> temporaryResourceCache)
128127
this.temporaryResourceCache = temporaryResourceCache;
129128
}
130129

131-
public void addIndexers(Map<String, Function<R, List<String>>> indexers) {
132-
indexerBuffer.putAll(indexers);
133-
}
130+
public abstract void addIndexers(Map<String, Function<R, List<String>>> indexers);
134131

135132
public List<R> byIndex(String indexName, String indexKey) {
136133
return manager().byIndex(indexName, indexKey);
@@ -173,12 +170,7 @@ public String toString() {
173170
"}";
174171
}
175172

176-
public void setConfigurationService(ConfigurationService configurationService) {
177-
cache = new InformerManager<>(client, configuration, configurationService, this);
178-
cache.addIndexers(indexerBuffer);
179-
indexerBuffer = null;
180-
this.configurationService = configurationService;
181-
}
173+
public abstract void setConfigurationService(ConfigurationService configurationService);
182174

183175
public void setExecutorServiceManager(
184176
ExecutorServiceManager executorServiceManager) {

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourcesTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ void checkControllerResourceEventSource() {
7878
when(configuration.getConfigurationService()).thenReturn(new BaseConfigurationService());
7979
final var controller = new Controller(mock(Reconciler.class), configuration,
8080
MockKubernetesClient.client(HasMetadata.class), mock(ExecutorServiceManager.class));
81-
eventSources.initControllerEventSource(controller);
81+
eventSources.createControllerEventSource(controller);
8282
final var controllerResourceEventSource = eventSources.controllerResourceEventSource();
8383
assertNotNull(controllerResourceEventSource);
8484
assertEquals(HasMetadata.class, controllerResourceEventSource.resourceType());

0 commit comments

Comments
 (0)