Skip to content

Commit c1d72b5

Browse files
csvirimetacosm
andcommitted
feat: all event source is resource event source (#2367)
Signed-off-by: Attila Mészáros <csviri@gmail.com> Signed-off-by: Chris Laprun <claprun@redhat.com> Co-authored-by: Chris Laprun <claprun@redhat.com> Signed-off-by: Attila Mészáros <csviri@gmail.com>
1 parent 7365fe2 commit c1d72b5

31 files changed

+281
-302
lines changed

docs/documentation/v5-0-migration.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ permalink: /docs/v5-0-migration
1717
[`EventSourceUtils`](https://github.com/operator-framework/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceUtils.java#L11-L11)
1818
now contains all the utility methods used for event sources naming that were previously defined in
1919
the `EventSourceInitializer` interface.
20-
3. Event sources are now explicitly named (via the `name` method of the `EventSource` interface). Built-in event sources
20+
3. Similarly, the `EventSourceProvider` interface has been remove, replaced by explicit initialization of the associated
21+
event source on `DependentResource` via the `
22+
Optional<? extends EventSource<R, P>> eventSource(EventSourceContext<P> eventSourceContext)` method.
23+
4. Event sources are now explicitly named (via the `name` method of the `EventSource` interface). Built-in event sources
2124
implementation have been updated to allow you to specify a name when instantiating them. If you don't provide a name
2225
for your `EventSource` implementation (for example, by using its default, no-arg constructor), one will be
2326
automatically generated. This simplifies the API to define event source to
@@ -27,7 +30,7 @@ permalink: /docs/v5-0-migration
2730
them automatically might result in duplicated event sources being registered as JOSDK relies on the name to identify
2831
event sources and concurrent, dynamic registration might lead to identical event sources having different generated
2932
names, thus leading JOSDK to consider them as different and hence, register them multiple times.
30-
4. Updates through `UpdateControl` now
33+
5. Updates through `UpdateControl` now
3134
use [Server Side Apply (SSA)](https://kubernetes.io/docs/reference/using-api/server-side-apply/) by default to add
3235
the finalizer and for all
3336
the patch operations in `UpdateControl`. The update operations were removed. If you do not wish to use SSA, you can
@@ -46,11 +49,11 @@ permalink: /docs/v5-0-migration
4649
the status sub-resource is not instructed to be updated. This is not true for SSA, observed generation is updated
4750
only when patch status is instructed by `UpdateControl`.
4851

49-
5. `ManagedDependentResourceContext` has been renamed to `ManagedWorkflowAndDependentResourceContext` and is accessed
52+
6. `ManagedDependentResourceContext` has been renamed to `ManagedWorkflowAndDependentResourceContext` and is accessed
5053
via the accordingly renamed `managedWorkflowAndDependentResourceContext` method.
51-
6. `ResourceDiscriminator` was removed. In most of the cases you can just delete the discriminator, everything should
54+
7. `ResourceDiscriminator` was removed. In most of the cases you can just delete the discriminator, everything should
5255
work without it by default. To optimize and handle special cases see the relevant section
5356
in [Dependent Resource documentation](/docs/dependent-resources#multiple-dependent-resources-of-same-type).
54-
7. `ConfigurationService.getTerminationTimeoutSeconds` and associated overriding mechanism have been removed,
57+
8. `ConfigurationService.getTerminationTimeoutSeconds` and associated overriding mechanism have been removed,
5558
use `Operator.stop(Duration)` instead.
56-
8. `Operator.installShutdownHook()` has been removed, use `Operator.installShutdownHook(Duration)` instead
59+
9. `Operator.installShutdownHook()` has been removed, use `Operator.installShutdownHook(Duration)` instead

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
@@ -28,6 +28,7 @@
2828
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig;
2929
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.ResourceUpdaterMatcher;
3030
import io.javaoperatorsdk.operator.processing.dependent.workflow.ManagedWorkflowFactory;
31+
import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerEventSource;
3132

3233
/** An interface from which to retrieve configuration information. */
3334
public interface ConfigurationService {
@@ -215,8 +216,7 @@ default Optional<LeaderElectionConfiguration> getLeaderElectionConfiguration() {
215216
* <p>
216217
* if true, operator stops if there are some issues with informers
217218
* {@link io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource} or
218-
* {@link io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource}
219-
* on startup. Other event sources may also respect this flag.
219+
* {@link ControllerEventSource} on startup. Other event sources may also respect this flag.
220220
* </p>
221221
* <p>
222222
* 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: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public <T> Set<T> getSecondaryResources(Class<T> expectedType) {
4444

4545
@Override
4646
public IndexedResourceCache<P> getPrimaryCache() {
47-
return controller.getEventSourceManager().getControllerResourceEventSource();
47+
return controller.getEventSourceManager().getControllerEventSource();
4848
}
4949

5050
@Override
@@ -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: 6 additions & 5 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.
@@ -32,8 +32,8 @@ public interface DependentResource<R, P extends HasMetadata> {
3232
Class<R> resourceType();
3333

3434
/**
35-
* Dependent resources are designed to by default provide event sources. There are cases where
36-
* they might not:
35+
* Dependent resources are designed to provide event sources by default. There are, however, cases
36+
* where they might not:
3737
* <ul>
3838
* <li>If an event source is shared between multiple dependent resources. In this case only one or
3939
* none of the dependent resources sharing the event source should provide one, if any.</li>
@@ -42,9 +42,10 @@ public interface DependentResource<R, P extends HasMetadata> {
4242
* </ul>
4343
*
4444
* @param eventSourceContext context of event source initialization
45-
* @return an optional event source
45+
* @return an optional event source initialized from the specified context
46+
* @since 5.0.0
4647
*/
47-
default Optional<? extends ResourceEventSource<R, P>> eventSource(
48+
default Optional<? extends EventSource<R, P>> eventSource(
4849
EventSourceContext<P> eventSourceContext) {
4950
return Optional.empty();
5051
}

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: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
import io.javaoperatorsdk.operator.processing.event.EventProcessor;
4444
import io.javaoperatorsdk.operator.processing.event.EventSourceManager;
4545
import io.javaoperatorsdk.operator.processing.event.ResourceID;
46-
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
46+
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
4747

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

@@ -102,7 +102,7 @@ public Controller(Reconciler<P> reconciler,
102102
eventSourceManager.postProcessDefaultEventSourcesAfterProcessorInitializer();
103103
controllerHealthInfo = new ControllerHealthInfo(eventSourceManager);
104104
eventSourceContext = new EventSourceContext<>(
105-
eventSourceManager.getControllerResourceEventSource(), configuration, kubernetesClient);
105+
eventSourceManager.getControllerEventSource(), configuration, kubernetesClient);
106106
initAndRegisterEventSources(eventSourceContext);
107107
configurationService.getMetrics().controllerRegistered(this);
108108
}
@@ -240,7 +240,7 @@ public void initAndRegisterEventSources(EventSourceContext<P> context) {
240240
final var size = dependentResourcesByName.size();
241241
if (size > 0) {
242242
dependentResourcesByName.forEach(dependentResource -> {
243-
Optional<ResourceEventSource> eventSource = dependentResource.eventSource(context);
243+
Optional<EventSource> eventSource = dependentResource.eventSource(context);
244244
eventSource.ifPresent(eventSourceManager::registerEventSource);
245245
});
246246

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/EventProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public EventProcessor(EventSourceManager<P> eventSourceManager,
5252
this(
5353
eventSourceManager.getController().getConfiguration(),
5454
new ReconciliationDispatcher<>(eventSourceManager.getController()), eventSourceManager,
55-
configurationService.getMetrics(), eventSourceManager.getControllerResourceEventSource());
55+
configurationService.getMetrics(), eventSourceManager.getControllerEventSource());
5656
}
5757

5858
@SuppressWarnings("rawtypes")
@@ -64,7 +64,7 @@ public EventProcessor(EventSourceManager<P> eventSourceManager,
6464
this(
6565
controllerConfiguration,
6666
reconciliationDispatcher, eventSourceManager, metrics,
67-
eventSourceManager.getControllerResourceEventSource());
67+
eventSourceManager.getControllerEventSource());
6868
}
6969

7070
@SuppressWarnings({"rawtypes", "unchecked"})

0 commit comments

Comments
 (0)