Skip to content

Commit 9ec77eb

Browse files
committed
wip
1 parent 8022aa7 commit 9ec77eb

19 files changed

+74
-74
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,7 @@ public <P extends HasMetadata> RegisteredController<P> register(Reconciler<P> re
216216
}
217217

218218
final var controller =
219-
new Controller<>(reconciler, configuration, kubernetesClient, executorServiceManager,
220-
configurationService);
219+
new Controller<>(reconciler, configuration, kubernetesClient, executorServiceManager);
221220

222221
controllerManager.add(controller);
223222

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceAware.java

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

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ExecutorServiceManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public <T> void boundedExecuteAndWaitForAllToComplete(Stream<T> stream,
5252
executeAndWaitForAllToComplete(stream, task, threadNamer, cachingExecutorService());
5353
}
5454

55-
public <T> void executeAndWaitForAllToComplete(Stream<T> stream,
55+
public static <T> void executeAndWaitForAllToComplete(Stream<T> stream,
5656
Function<T, Void> task, Function<T, String> threadNamer,
5757
ExecutorService executorService) {
5858
final var instrumented = new InstrumentedExecutorService(executorService);

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ExecutorServiceManagerAware.java

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

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,13 @@ public class Controller<P extends HasMetadata>
6767

6868
public Controller(Reconciler<P> reconciler,
6969
ControllerConfiguration<P> configuration,
70-
KubernetesClient kubernetesClient, ExecutorServiceManager executorServiceManager,
71-
ConfigurationService configurationService) {
70+
KubernetesClient kubernetesClient, ExecutorServiceManager executorServiceManager) {
7271
// needs to be initialized early since it's used in other downstream classes
7372
associatedGVK = GroupVersionKind.gvkFor(configuration.getResourceClass());
7473

7574
this.reconciler = reconciler;
7675
this.configuration = configuration;
76+
this.configurationService = configuration.getConfigurationService();
7777
this.kubernetesClient = kubernetesClient;
7878
this.metrics = Optional.ofNullable(configurationService.getMetrics()).orElse(Metrics.NOOP);
7979
contextInitializer = reconciler instanceof ContextInitializer;
@@ -82,7 +82,6 @@ public Controller(Reconciler<P> reconciler,
8282
final var managed = configurationService.getWorkflowFactory().workflowFor(configuration);
8383
managedWorkflow = managed.resolve(kubernetesClient, configuration);
8484

85-
this.configurationService = configurationService;
8685
eventSourceManager = new EventSourceManager<>(this, executorServiceManager);
8786
eventProcessor =
8887
new EventProcessor<>(eventSourceManager, executorServiceManager, configurationService);

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesResourceMatcher.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,15 +132,15 @@ public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
132132
KubernetesDependentResource<R, P> dependentResource, R actualResource, P primary,
133133
Context<P> context, boolean considerMetadata, boolean strongEquality) {
134134
final var desired = dependentResource.desired(primary, context);
135-
return match(desired, actualResource, considerMetadata, strongEquality, dependentResource
136-
.getConfigurationService().getObjectMapper());
135+
return match(desired, actualResource, considerMetadata, strongEquality,
136+
context.getControllerConfiguration().getConfigurationService().getObjectMapper());
137137
}
138138

139139
public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
140140
KubernetesDependentResource<R, P> dependentResource, R actualResource, P primary,
141141
Context<P> context, boolean considerMetadata) {
142142
final var desired = dependentResource.desired(primary, context);
143-
return match(desired, actualResource, considerMetadata, false, dependentResource
144-
.getConfigurationService().getObjectMapper());
143+
return match(desired, actualResource, considerMetadata, false,
144+
context.getControllerConfiguration().getConfigurationService().getObjectMapper());
145145
}
146146
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
import io.fabric8.kubernetes.client.KubernetesClient;
1313
import io.fabric8.kubernetes.client.dsl.Resource;
1414
import io.javaoperatorsdk.operator.OperatorException;
15-
import io.javaoperatorsdk.operator.api.config.ConfigurationService;
16-
import io.javaoperatorsdk.operator.api.config.ConfigurationServiceAware;
1715
import io.javaoperatorsdk.operator.api.config.dependent.Configured;
1816
import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
1917
import io.javaoperatorsdk.operator.api.reconciler.Constants;
@@ -36,7 +34,7 @@
3634
converter = KubernetesDependentConverter.class)
3735
public abstract class KubernetesDependentResource<R extends HasMetadata, P extends HasMetadata>
3836
extends AbstractEventSourceHolderDependentResource<R, P, InformerEventSource<R, P>>
39-
implements KubernetesClientAware, ConfigurationServiceAware,
37+
implements KubernetesClientAware,
4038
DependentResourceConfigurator<KubernetesDependentResourceConfig<R>> {
4139

4240
private static final Logger log = LoggerFactory.getLogger(KubernetesDependentResource.class);
@@ -46,15 +44,13 @@ public abstract class KubernetesDependentResource<R extends HasMetadata, P exten
4644
private final ResourceUpdatePreProcessor<R> processor;
4745
private final boolean garbageCollected = this instanceof GarbageCollected;
4846
private KubernetesDependentResourceConfig<R> kubernetesDependentResourceConfig;
49-
private ConfigurationService configurationService;
5047

5148
@SuppressWarnings("unchecked")
5249
public KubernetesDependentResource(Class<R> resourceType) {
5350
super(resourceType);
5451
matcher = this instanceof Matcher ? (Matcher<R, P>) this
5552
: GenericKubernetesResourceMatcher.matcherFor(resourceType, this);
5653

57-
// todo config service aware
5854
processor = this instanceof ResourceUpdatePreProcessor
5955
? (ResourceUpdatePreProcessor<R>) this
6056
: GenericResourceUpdatePreProcessor.processorFor(resourceType);
@@ -150,7 +146,7 @@ public Result<R> match(R actualResource, P primary, Context<P> context) {
150146
@SuppressWarnings("unused")
151147
public Result<R> match(R actualResource, R desired, P primary, Context<P> context) {
152148
return GenericKubernetesResourceMatcher.match(desired, actualResource, false,
153-
configurationService.getObjectMapper());
149+
context.getControllerConfiguration().getConfigurationService().getObjectMapper());
154150
}
155151

156152
protected void handleDelete(P primary, R secondary, Context<P> context) {
@@ -266,12 +262,4 @@ public boolean isDeletable() {
266262
return super.isDeletable() && !garbageCollected;
267263
}
268264

269-
@Override
270-
public void setConfigurationService(ConfigurationService configurationService) {
271-
this.configurationService = configurationService;
272-
}
273-
274-
public ConfigurationService getConfigurationService() {
275-
return configurationService;
276-
}
277265
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
2323
import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource;
2424
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceAction;
25+
import io.javaoperatorsdk.operator.processing.event.source.informer.ManagedInformerEventSource;
2526
import io.javaoperatorsdk.operator.processing.event.source.timer.TimerEventSource;
2627

2728
public class EventSourceManager<P extends HasMetadata>
@@ -153,6 +154,10 @@ public final synchronized void registerEventSource(String name, EventSource even
153154
if (name == null || name.isBlank()) {
154155
name = EventSourceInitializer.generateNameFor(eventSource);
155156
}
157+
if (eventSource instanceof ManagedInformerEventSource) {
158+
((ManagedInformerEventSource) eventSource).setConfigurationService(controller
159+
.getConfiguration().getConfigurationService());
160+
}
156161
final var named = new NamedEventSource(eventSource, name);
157162
eventSources.add(named);
158163
named.setEventHandler(controller.getEventProcessor());

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ class EventSources<R extends HasMetadata> {
3232

3333
void initControllerEventSource(Controller<R> controller) {
3434
controllerResourceEventSource = new ControllerResourceEventSource<>(controller);
35+
controllerResourceEventSource
36+
.setConfigurationService(controller.getConfiguration().getConfigurationService());
3537
}
3638

3739
ControllerResourceEventSource<R> controllerResourceEventSource() {

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import io.fabric8.kubernetes.client.dsl.Resource;
1818
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
1919
import io.javaoperatorsdk.operator.api.config.ConfigurationService;
20-
import io.javaoperatorsdk.operator.api.config.ConfigurationServiceAware;
2120
import io.javaoperatorsdk.operator.api.config.NamespaceChangeable;
2221
import io.javaoperatorsdk.operator.api.config.ResourceConfiguration;
2322
import io.javaoperatorsdk.operator.api.reconciler.dependent.RecentOperationCacheFiller;
@@ -33,9 +32,8 @@
3332
public abstract class ManagedInformerEventSource<R extends HasMetadata, P extends HasMetadata, C extends ResourceConfiguration<R>>
3433
extends AbstractResourceEventSource<R, P>
3534
implements ResourceEventHandler<R>, Cache<R>, IndexerResourceCache<R>,
36-
RecentOperationCacheFiller<R>,
37-
NamespaceChangeable, InformerWrappingEventSourceHealthIndicator<R>, Configurable<C>,
38-
ConfigurationServiceAware {
35+
RecentOperationCacheFiller<R>, NamespaceChangeable,
36+
InformerWrappingEventSourceHealthIndicator<R>, Configurable<C> {
3937

4038
private static final Logger log = LoggerFactory.getLogger(ManagedInformerEventSource.class);
4139

@@ -176,9 +174,9 @@ public String toString() {
176174
"}";
177175
}
178176

179-
@Override
180177
public void setConfigurationService(ConfigurationService configurationService) {
181178
cache = new InformerManager<>(client, configuration, configurationService, this);
182179
this.configurationService = configurationService;
183180
}
181+
184182
}

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,9 @@ private <T extends HasMetadata, U extends HasMetadata> void checkException(
5151
final var exception = assertThrows(OperatorException.class, () -> {
5252
final var controllerManager = new ControllerManager(executorServiceManager);
5353
controllerManager.add(new Controller<>(registered.controller, registered,
54-
MockKubernetesClient.client(registered.getResourceClass()), executorServiceManager,
55-
configurationService));
54+
MockKubernetesClient.client(registered.getResourceClass()), executorServiceManager));
5655
controllerManager.add(new Controller<>(duplicated.controller, duplicated,
57-
MockKubernetesClient.client(duplicated.getResourceClass()), executorServiceManager,
58-
configurationService));
56+
MockKubernetesClient.client(duplicated.getResourceClass()), executorServiceManager));
5957
});
6058
final var msg = exception.getMessage();
6159
assertTrue(

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/MockControllerConfiguration.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,26 @@
33
import io.fabric8.kubernetes.api.model.HasMetadata;
44

55
import static io.javaoperatorsdk.operator.api.reconciler.Constants.DEFAULT_NAMESPACES_SET;
6+
import static org.mockito.ArgumentMatchers.any;
67
import static org.mockito.Mockito.mock;
78
import static org.mockito.Mockito.when;
89

910
public class MockControllerConfiguration {
10-
@SuppressWarnings({"unchecked", "rawtypes"})
11+
1112
public static <R extends HasMetadata> ControllerConfiguration<R> forResource(
1213
Class<R> resourceType) {
14+
return forResource(resourceType, null);
15+
}
16+
17+
@SuppressWarnings({"unchecked", "rawtypes"})
18+
public static <R extends HasMetadata> ControllerConfiguration<R> forResource(
19+
Class<R> resourceType, ConfigurationService configurationService) {
1320
final ControllerConfiguration configuration = mock(ControllerConfiguration.class);
1421
when(configuration.getResourceClass()).thenReturn(resourceType);
1522
when(configuration.getNamespaces()).thenReturn(DEFAULT_NAMESPACES_SET);
16-
when(configuration.getEffectiveNamespaces(new BaseConfigurationService())).thenCallRealMethod();
23+
when(configuration.getEffectiveNamespaces(any())).thenCallRealMethod();
1724
when(configuration.getName()).thenReturn(resourceType.getSimpleName());
25+
when(configuration.getConfigurationService()).thenReturn(configurationService);
1826
return configuration;
1927
}
2028
}

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@ class ControllerTest {
2323
@Test
2424
void crdShouldNotBeCheckedForNativeResources() {
2525
final var client = MockKubernetesClient.client(Secret.class);
26-
final var configuration = MockControllerConfiguration.forResource(Secret.class);
27-
26+
final var configuration =
27+
MockControllerConfiguration.forResource(Secret.class, configurationService);
2828
final var controller =
29-
new Controller<Secret>(reconciler, configuration, client, executorServiceManager,
30-
configurationService);
29+
new Controller<Secret>(reconciler, configuration, client, executorServiceManager);
3130
controller.start();
3231
verify(client, never()).apiextensions();
3332
}
@@ -36,16 +35,16 @@ void crdShouldNotBeCheckedForNativeResources() {
3635
void crdShouldNotBeCheckedForCustomResourcesIfDisabled() {
3736
ConfigurationServiceProvider.reset();
3837
final var client = MockKubernetesClient.client(TestCustomResource.class);
39-
final var configuration = MockControllerConfiguration.forResource(TestCustomResource.class);
4038

4139
try {
4240
ConfigurationService configurationService =
4341
ConfigurationService.overrideCurrent(new BaseConfigurationService(),
4442
o -> o.checkingCRDAndValidateLocalModel(false));
4543

44+
final var configuration =
45+
MockControllerConfiguration.forResource(TestCustomResource.class, configurationService);
4646
final var controller = new Controller<TestCustomResource>(reconciler, configuration, client,
47-
executorServiceManager,
48-
configurationService);
47+
executorServiceManager);
4948
controller.start();
5049
verify(client, never()).apiextensions();
5150
} finally {
@@ -59,7 +58,7 @@ void usesFinalizerIfThereIfReconcilerImplementsCleaner() {
5958
final var configuration = MockControllerConfiguration.forResource(Secret.class);
6059

6160
final var controller = new Controller<Secret>(reconciler, configuration,
62-
MockKubernetesClient.client(Secret.class), executorServiceManager, configurationService);
61+
MockKubernetesClient.client(Secret.class), executorServiceManager);
6362

6463
assertThat(controller.useFinalizer()).isTrue();
6564
}

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import io.fabric8.kubernetes.api.model.HasMetadata;
99
import io.javaoperatorsdk.operator.MockKubernetesClient;
1010
import io.javaoperatorsdk.operator.OperatorException;
11-
import io.javaoperatorsdk.operator.api.config.ConfigurationService;
1211
import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager;
1312
import io.javaoperatorsdk.operator.api.config.MockControllerConfiguration;
1413
import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
@@ -151,8 +150,7 @@ void changesNamespacesOnControllerAndInformerEventSources() {
151150

152151
final var configuration = MockControllerConfiguration.forResource(HasMetadata.class);
153152
final Controller controller = new Controller(mock(Reconciler.class), configuration,
154-
MockKubernetesClient.client(HasMetadata.class), mock(ExecutorServiceManager.class),
155-
mock(ConfigurationService.class));
153+
MockKubernetesClient.client(HasMetadata.class), mock(ExecutorServiceManager.class));
156154

157155
EventSources eventSources = spy(new EventSources());
158156
var controllerResourceEventSourceMock = mock(ControllerResourceEventSource.class);
@@ -178,8 +176,7 @@ void changesNamespacesOnControllerAndInformerEventSources() {
178176
private EventSourceManager initManager() {
179177
final var configuration = MockControllerConfiguration.forResource(ConfigMap.class);
180178
final Controller controller = new Controller(mock(Reconciler.class), configuration,
181-
MockKubernetesClient.client(ConfigMap.class), mock(ExecutorServiceManager.class),
182-
mock(ConfigurationService.class));
179+
MockKubernetesClient.client(ConfigMap.class), mock(ExecutorServiceManager.class));
183180
return new EventSourceManager(controller, mock(ExecutorServiceManager.class));
184181
}
185182
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import io.fabric8.kubernetes.api.model.HasMetadata;
77
import io.fabric8.kubernetes.api.model.Service;
88
import io.javaoperatorsdk.operator.MockKubernetesClient;
9-
import io.javaoperatorsdk.operator.api.config.ConfigurationService;
109
import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager;
1110
import io.javaoperatorsdk.operator.api.config.MockControllerConfiguration;
1211
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
@@ -76,8 +75,7 @@ void checkControllerResourceEventSource() {
7675
final var eventSources = new EventSources();
7776
final var configuration = MockControllerConfiguration.forResource(HasMetadata.class);
7877
final var controller = new Controller(mock(Reconciler.class), configuration,
79-
MockKubernetesClient.client(HasMetadata.class), mock(ExecutorServiceManager.class),
80-
mock(ConfigurationService.class));
78+
MockKubernetesClient.client(HasMetadata.class), mock(ExecutorServiceManager.class));
8179
eventSources.initControllerEventSource(controller);
8280
final var controllerResourceEventSource = eventSources.controllerResourceEventSource();
8381
assertNotNull(controllerResourceEventSource);

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class ReconciliationDispatcherTest {
6565
private final CustomResourceFacade<TestCustomResource> customResourceFacade =
6666
mock(ReconciliationDispatcher.CustomResourceFacade.class);
6767
private static ConfigurationService configurationService;
68+
private static ExecutorServiceManager executorServiceManager;
6869

6970
@BeforeAll
7071
static void classSetup() {
@@ -75,7 +76,6 @@ static void classSetup() {
7576
* equals will fail on the two equal but NOT identical TestCustomResources because equals is not
7677
* implemented on TestCustomResourceSpec or TestCustomResourceStatus
7778
*/
78-
7979
configurationService = ConfigurationService.overrideCurrent(new BaseConfigurationService(),
8080
overrider -> overrider.checkingCRDAndValidateLocalModel(false)
8181
.withResourceCloner(new Cloner() {
@@ -84,6 +84,7 @@ public <R extends HasMetadata> R clone(R object) {
8484
return object;
8585
}
8686
}));
87+
executorServiceManager = new ExecutorServiceManager(configurationService);
8788
}
8889

8990
@BeforeEach
@@ -99,9 +100,11 @@ private <R extends HasMetadata> ReconciliationDispatcher<R> init(R customResourc
99100
CustomResourceFacade<R> customResourceFacade, boolean useFinalizer) {
100101

101102
final Class<R> resourceClass = (Class<R>) customResource.getClass();
102-
configuration = configuration == null ? MockControllerConfiguration.forResource(resourceClass)
103+
configuration = configuration == null
104+
? MockControllerConfiguration.forResource(resourceClass, configurationService)
103105
: configuration;
104106

107+
when(configuration.getConfigurationService()).thenReturn(configurationService);
105108
when(configuration.getFinalizerName()).thenReturn(DEFAULT_FINALIZER);
106109
when(configuration.getName()).thenReturn("EventDispatcherTestController");
107110
when(configuration.getResourceClass()).thenReturn(resourceClass);
@@ -113,8 +116,7 @@ private <R extends HasMetadata> ReconciliationDispatcher<R> init(R customResourc
113116
.thenReturn(Optional.of(Duration.ofHours(RECONCILIATION_MAX_INTERVAL)));
114117

115118
Controller<R> controller = new Controller<>(reconciler, configuration,
116-
MockKubernetesClient.client(resourceClass), mock(ExecutorServiceManager.class),
117-
configurationService) {
119+
MockKubernetesClient.client(resourceClass), executorServiceManager) {
118120
@Override
119121
public boolean useFinalizer() {
120122
return useFinalizer;

0 commit comments

Comments
 (0)