Skip to content

Commit cb64356

Browse files
csvirimetacosm
authored andcommitted
feat: all event source is resource event source
Signed-off-by: Attila Mészáros <csviri@gmail.com>
1 parent 5ab2658 commit cb64356

28 files changed

+219
-240
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import io.javaoperatorsdk.operator.health.EventSourceHealthIndicator;
99
import io.javaoperatorsdk.operator.health.InformerWrappingEventSourceHealthIndicator;
10+
import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerEventSource;
1011

1112
/**
1213
* RuntimeInfo in general is available when operator is fully started. You can use "isStarted" to
@@ -64,9 +65,7 @@ public Map<String, Map<String, EventSourceHealthIndicator>> unhealthyEventSource
6465

6566
/**
6667
* @return Aggregated Map with controller related event sources that wraps an informer. Thus,
67-
* either a
68-
* {@link io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource}
69-
* or an
68+
* either a {@link ControllerEventSource} or an
7069
* {@link io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource}.
7170
*/
7271
public Map<String, Map<String, InformerWrappingEventSourceHealthIndicator>> unhealthyInformerWrappingEventSourceHealthIndicator() {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResourceFactory;
2626
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
2727
import io.javaoperatorsdk.operator.processing.dependent.workflow.ManagedWorkflowFactory;
28+
import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerEventSource;
2829

2930
/** An interface from which to retrieve configuration information. */
3031
public interface ConfigurationService {
@@ -212,8 +213,7 @@ default Optional<LeaderElectionConfiguration> getLeaderElectionConfiguration() {
212213
* <p>
213214
* if true, operator stops if there are some issues with informers
214215
* {@link io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource} or
215-
* {@link io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource}
216-
* on startup. Other event sources may also respect this flag.
216+
* {@link ControllerEventSource} on startup. Other event sources may also respect this flag.
217217
* </p>
218218
* <p>
219219
* if false, the startup will ignore recoverable errors, caused for example by RBAC issues, and

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public boolean isNextReconciliationImminent() {
5555

5656
@Override
5757
public <R> Stream<R> getSecondaryResourcesAsStream(Class<R> expectedType) {
58-
return controller.getEventSourceManager().getResourceEventSourcesFor(expectedType).stream()
58+
return controller.getEventSourceManager().getEventSourcesFor(expectedType).stream()
5959
.map(es -> es.getSecondaryResources(primaryResource))
6060
.flatMap(Set::stream);
6161
}
@@ -64,7 +64,7 @@ public <R> Stream<R> getSecondaryResourcesAsStream(Class<R> expectedType) {
6464
public <T> Optional<T> getSecondaryResource(Class<T> expectedType, String eventSourceName) {
6565
return controller
6666
.getEventSourceManager()
67-
.getResourceEventSourceFor(expectedType, eventSourceName)
67+
.getEventSourceFor(expectedType, eventSourceName)
6868
.getSecondaryResource(primaryResource);
6969
}
7070

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/DependentResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import io.fabric8.kubernetes.api.model.HasMetadata;
66
import io.javaoperatorsdk.operator.api.reconciler.Context;
77
import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext;
8-
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
8+
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
99

1010
/**
1111
* An interface to implement and provide dependent resource support.
@@ -44,7 +44,7 @@ public interface DependentResource<R, P extends HasMetadata> {
4444
* @param eventSourceContext context of event source initialization
4545
* @return an optional event source
4646
*/
47-
default Optional<? extends ResourceEventSource<R, P>> eventSource(
47+
default Optional<? extends EventSource<R, P>> eventSource(
4848
EventSourceContext<P> eventSourceContext) {
4949
return Optional.empty();
5050
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/health/ControllerHealthInfo.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import io.javaoperatorsdk.operator.processing.event.EventSourceManager;
77
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
8+
import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerEventSource;
89

910
@SuppressWarnings("rawtypes")
1011
public class ControllerHealthInfo {
@@ -36,8 +37,7 @@ public Map<String, InformerWrappingEventSourceHealthIndicator> informerEventSour
3637

3738
/**
3839
* @return Map with event sources that wraps an informer. Thus, either a
39-
* {@link io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource}
40-
* or an
40+
* {@link ControllerEventSource} or an
4141
* {@link io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource}.
4242
*/
4343
public Map<String, InformerWrappingEventSourceHealthIndicator> unhealthyInformerEventSourceHealthIndicators() {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import io.javaoperatorsdk.operator.processing.event.EventProcessor;
4545
import io.javaoperatorsdk.operator.processing.event.EventSourceManager;
4646
import io.javaoperatorsdk.operator.processing.event.ResourceID;
47-
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
47+
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
4848

4949
import static io.javaoperatorsdk.operator.api.reconciler.Constants.WATCH_CURRENT_NAMESPACE;
5050

@@ -242,7 +242,7 @@ public void initAndRegisterEventSources(EventSourceContext<P> context) {
242242
final var size = dependentResourcesByName.size();
243243
if (size > 0) {
244244
dependentResourcesByName.forEach(dependentResource -> {
245-
Optional<ResourceEventSource> eventSource = dependentResource.eventSource(context);
245+
Optional<EventSource> eventSource = dependentResource.eventSource(context);
246246
eventSource.ifPresent(eventSourceManager::registerEventSource);
247247
});
248248

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111
import io.javaoperatorsdk.operator.api.reconciler.dependent.RecentOperationCacheFiller;
1212
import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever;
1313
import io.javaoperatorsdk.operator.processing.event.ResourceID;
14-
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
14+
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
1515
import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter;
1616
import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter;
1717
import io.javaoperatorsdk.operator.processing.event.source.filter.OnDeleteFilter;
1818
import io.javaoperatorsdk.operator.processing.event.source.filter.OnUpdateFilter;
1919

2020
@Ignore
21-
public abstract class AbstractEventSourceHolderDependentResource<R, P extends HasMetadata, T extends ResourceEventSource<R, P>>
21+
public abstract class AbstractEventSourceHolderDependentResource<R, P extends HasMetadata, T extends EventSource<R, P>>
2222
extends AbstractDependentResource<R, P> implements EventSourceReferencer<P> {
2323

2424
private T eventSource;
@@ -67,7 +67,7 @@ public synchronized Optional<T> eventSource(EventSourceContext<P> context) {
6767
public void resolveEventSource(EventSourceRetriever<P> eventSourceRetriever) {
6868
if (eventSourceNameToUse != null && eventSource == null) {
6969
final var source =
70-
eventSourceRetriever.getResourceEventSourceFor(resourceType(), eventSourceNameToUse);
70+
eventSourceRetriever.getEventSourceFor(resourceType(), eventSourceNameToUse);
7171
if (source == null) {
7272
throw new EventSourceNotFoundException(eventSourceNameToUse);
7373
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
import io.javaoperatorsdk.operator.api.reconciler.dependent.RecentOperationCacheFiller;
66
import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever;
77
import io.javaoperatorsdk.operator.processing.event.ResourceID;
8-
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
8+
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
99
import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource;
1010

11-
public abstract class AbstractExternalDependentResource<R, P extends HasMetadata, T extends ResourceEventSource<R, P>>
11+
public abstract class AbstractExternalDependentResource<R, P extends HasMetadata, T extends EventSource<R, P>>
1212
extends AbstractEventSourceHolderDependentResource<R, P, T> {
1313

1414
private final boolean isDependentResourceWithExplicitState =
@@ -34,7 +34,7 @@ public void resolveEventSource(EventSourceRetriever<P> eventSourceRetriever) {
3434
final var eventSourceName = (String) dependentResourceWithExplicitState
3535
.eventSourceName().orElse(null);
3636
externalStateEventSource = (InformerEventSource<?, P>) eventSourceRetriever
37-
.getResourceEventSourceFor(dependentResourceWithExplicitState.stateResourceClass(),
37+
.getEventSourceFor(dependentResourceWithExplicitState.stateResourceClass(),
3838
eventSourceName);
3939
}
4040

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

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
2323
import io.javaoperatorsdk.operator.processing.event.source.EventSourceStartPriority;
2424
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventAware;
25-
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
26-
import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource;
25+
import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerEventSource;
2726
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceAction;
2827
import io.javaoperatorsdk.operator.processing.event.source.informer.ManagedInformerEventSource;
2928
import io.javaoperatorsdk.operator.processing.event.source.timer.TimerEventSource;
@@ -51,7 +50,7 @@ public EventSourceManager(Controller<P> controller) {
5150
}
5251

5352
public void postProcessDefaultEventSourcesAfterProcessorInitializer() {
54-
eventSources.controllerResourceEventSource().setEventHandler(controller.getEventProcessor());
53+
eventSources.controllerEventSource().setEventHandler(controller.getEventProcessor());
5554
eventSources.retryEventSource().setEventHandler(controller.getEventProcessor());
5655
}
5756

@@ -63,11 +62,11 @@ public void postProcessDefaultEventSourcesAfterProcessorInitializer() {
6362
* {@link io.javaoperatorsdk.operator.processing.event.source.polling.PerResourcePollingEventSource}).
6463
* <p>
6564
* Now the event sources are also started sequentially, mainly because others might depend on
66-
* {@link ControllerResourceEventSource} , which is started first.
65+
* {@link ControllerEventSource} , which is started first.
6766
*/
6867
@Override
6968
public synchronized void start() {
70-
startEventSource(eventSources.controllerResourceEventSource());
69+
startEventSource(eventSources.controllerEventSource());
7170

7271
executorServiceManager.boundedExecuteAndWaitForAllToComplete(
7372
eventSources.additionalEventSources()
@@ -92,7 +91,7 @@ private static Function<NamespaceChangeable, String> getEventSourceThreadNamer(S
9291

9392
@Override
9493
public synchronized void stop() {
95-
stopEventSource(eventSources.controllerResourceEventSource());
94+
stopEventSource(eventSources.controllerEventSource());
9695
executorServiceManager.boundedExecuteAndWaitForAllToComplete(
9796
eventSources.additionalEventSources(),
9897
this::stopEventSource,
@@ -102,12 +101,8 @@ public synchronized void stop() {
102101
@SuppressWarnings("rawtypes")
103102
private void logEventSourceEvent(EventSource eventSource, String event) {
104103
if (log.isDebugEnabled()) {
105-
if (eventSource instanceof ResourceEventSource source) {
106-
log.debug("{} event source {} for {}", event, eventSource.name(),
107-
source.resourceType());
108-
} else {
109-
log.debug("{} event source {}", event, eventSource.name());
110-
}
104+
log.debug("{} event source {} for {}", event, eventSource.name(),
105+
eventSource.resourceType());
111106
}
112107
}
113108

@@ -176,7 +171,7 @@ public void broadcastOnResourceEvent(ResourceAction action, P resource, P oldRes
176171
}
177172

178173
public void changeNamespaces(Set<String> namespaces) {
179-
eventSources.controllerResourceEventSource()
174+
eventSources.controllerEventSource()
180175
.changeNamespaces(namespaces);
181176
executorServiceManager.boundedExecuteAndWaitForAllToComplete(eventSources
182177
.additionalEventSources()
@@ -199,11 +194,11 @@ public List<EventSource> allEventSources() {
199194
return eventSources.allEventSources().toList();
200195
}
201196

202-
public ControllerResourceEventSource<P> getControllerResourceEventSource() {
203-
return eventSources.controllerResourceEventSource();
197+
public ControllerEventSource<P> getControllerResourceEventSource() {
198+
return eventSources.controllerEventSource();
204199
}
205200

206-
public <R> List<ResourceEventSource<R, P>> getResourceEventSourcesFor(Class<R> dependentType) {
201+
public <R> List<EventSource<R, P>> getEventSourcesFor(Class<R> dependentType) {
207202
return eventSources.getEventSources(dependentType);
208203
}
209204

@@ -237,20 +232,8 @@ public EventSourceContext<P> eventSourceContextForDynamicRegistration() {
237232
return controller.eventSourceContext();
238233
}
239234

240-
/**
241-
* @deprecated Use {@link #getResourceEventSourceFor(Class)} instead
242-
*
243-
* @param <R> target resource type
244-
* @param dependentType target resource class
245-
* @return list of related event sources
246-
*/
247-
@Deprecated
248-
public <R> List<ResourceEventSource<R, P>> getEventSourcesFor(Class<R> dependentType) {
249-
return getResourceEventSourcesFor(dependentType);
250-
}
251-
252235
@Override
253-
public <R> ResourceEventSource<R, P> getResourceEventSourceFor(
236+
public <R> EventSource<R, P> getEventSourceFor(
254237
Class<R> dependentType, String name) {
255238
Objects.requireNonNull(dependentType, "dependentType is Mandatory");
256239
return eventSources.get(dependentType, name);

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@
66
import io.fabric8.kubernetes.api.model.HasMetadata;
77
import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext;
88
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
9-
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
109

1110
public interface EventSourceRetriever<P extends HasMetadata> {
1211

13-
default <R> ResourceEventSource<R, P> getResourceEventSourceFor(Class<R> dependentType) {
14-
return getResourceEventSourceFor(dependentType, null);
12+
default <R> EventSource<R, P> getEventSourceFor(Class<R> dependentType) {
13+
return getEventSourceFor(dependentType, null);
1514
}
1615

17-
<R> ResourceEventSource<R, P> getResourceEventSourceFor(Class<R> dependentType, String name);
16+
<R> EventSource<R, P> getEventSourceFor(Class<R> dependentType, String name);
1817

19-
<R> List<ResourceEventSource<R, P>> getResourceEventSourcesFor(Class<R> dependentType);
18+
<R> List<EventSource<R, P>> getEventSourcesFor(Class<R> dependentType);
2019

2120
/**
2221
* <p>
@@ -50,7 +49,7 @@ default <R> ResourceEventSource<R, P> getResourceEventSourceFor(Class<R> depende
5049
* @param eventSource to register
5150
* @return the actual event source registered. Might not be the same as the parameter.
5251
*/
53-
EventSource dynamicallyRegisterEventSource(EventSource eventSource);
52+
<R> EventSource<R, P> dynamicallyRegisterEventSource(EventSource<R, P> eventSource);
5453

5554
/**
5655
* De-registers (and stops) the {@link EventSource} associated with the specified name. If no such
@@ -68,7 +67,7 @@ default <R> ResourceEventSource<R, P> getResourceEventSourceFor(Class<R> depende
6867
* @param name of the event source
6968
* @return the actual event source deregistered if there is one.
7069
*/
71-
Optional<EventSource> dynamicallyDeRegisterEventSource(String name);
70+
<R> Optional<EventSource<R, P>> dynamicallyDeRegisterEventSource(String name);
7271

7372
EventSourceContext<P> eventSourceContextForDynamicRegistration();
7473

0 commit comments

Comments
 (0)