Skip to content

Commit aa84517

Browse files
committed
introduce event source utils
Signed-off-by: Attila Mészáros <[email protected]>
1 parent dcf17df commit aa84517

File tree

31 files changed

+106
-105
lines changed

31 files changed

+106
-105
lines changed

Diff for: caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public Map<String, EventSource> prepareEventSources(
8282
Mappers.fromOwnerReference(this instanceof BoundedCacheClusterScopeTestReconciler))
8383
.build(), context);
8484

85-
return Reconciler.nameEventSources(es);
85+
return EventSourceUtils.nameEventSources(es);
8686
}
8787

8888
private void ensureStatus(P resource) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package io.javaoperatorsdk.operator.api.reconciler;
2+
3+
import java.util.*;
4+
5+
import io.fabric8.kubernetes.api.model.HasMetadata;
6+
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
7+
import io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow;
8+
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
9+
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
10+
11+
public class EventSourceUtils {
12+
/**
13+
* Utility method to easily create map with generated name for event sources. This is for the use
14+
* case when the event sources are not access explicitly by name in the reconciler.
15+
*
16+
* @param eventSources to name
17+
* @return even source with default names
18+
*/
19+
public static Map<String, EventSource> nameEventSources(EventSource... eventSources) {
20+
Map<String, EventSource> eventSourceMap = new HashMap<>(eventSources.length);
21+
for (EventSource eventSource : eventSources) {
22+
eventSourceMap.put(generateNameFor(eventSource), eventSource);
23+
}
24+
return eventSourceMap;
25+
}
26+
27+
@SuppressWarnings("unchecked")
28+
public static <K extends HasMetadata> Map<String, EventSource> eventSourcesFromWorkflow(
29+
EventSourceContext<K> context,
30+
Workflow<K> workflow) {
31+
Map<String, EventSource> result = new HashMap<>();
32+
for (var e : workflow.getDependentResourcesByNameWithoutActivationCondition().entrySet()) {
33+
var eventSource = e.getValue().eventSource(context);
34+
eventSource.ifPresent(es -> result.put(e.getKey(), (EventSource) es));
35+
}
36+
return result;
37+
}
38+
39+
@SuppressWarnings("rawtypes")
40+
public static <K extends HasMetadata> Map<String, EventSource> nameEventSourcesFromDependentResource(
41+
EventSourceContext<K> context, DependentResource... dependentResources) {
42+
return nameEventSourcesFromDependentResource(context, Arrays.asList(dependentResources));
43+
}
44+
45+
@SuppressWarnings("unchecked,rawtypes")
46+
public static <K extends HasMetadata> Map<String, EventSource> nameEventSourcesFromDependentResource(
47+
EventSourceContext<K> context, Collection<DependentResource> dependentResources) {
48+
49+
if (dependentResources != null) {
50+
Map<String, EventSource> eventSourceMap = new HashMap<>(dependentResources.size());
51+
for (DependentResource dependentResource : dependentResources) {
52+
Optional<ResourceEventSource> es = dependentResource.eventSource(context);
53+
es.ifPresent(e -> eventSourceMap.put(generateNameFor(e), e));
54+
}
55+
return eventSourceMap;
56+
} else {
57+
return Collections.emptyMap();
58+
}
59+
}
60+
61+
/**
62+
* Used when event sources are not explicitly named when created/registered.
63+
*
64+
* @param eventSource EventSource
65+
* @return generated name
66+
*/
67+
public static String generateNameFor(EventSource eventSource) {
68+
// we can have multiple event sources for the same class
69+
return eventSource.getClass().getName() + "#" + eventSource.hashCode();
70+
}
71+
}

Diff for: operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Reconciler.java

-62
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
import java.util.*;
44

55
import io.fabric8.kubernetes.api.model.HasMetadata;
6-
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
7-
import io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow;
86
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
9-
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
107

118
public interface Reconciler<P extends HasMetadata> {
129

@@ -35,63 +32,4 @@ default Map<String, EventSource> prepareEventSources(EventSourceContext<P> conte
3532
return Map.of();
3633
}
3734

38-
/**
39-
* Utility method to easily create map with generated name for event sources. This is for the use
40-
* case when the event sources are not access explicitly by name in the reconciler.
41-
*
42-
* @param eventSources to name
43-
* @return even source with default names
44-
*/
45-
static Map<String, EventSource> nameEventSources(EventSource... eventSources) {
46-
Map<String, EventSource> eventSourceMap = new HashMap<>(eventSources.length);
47-
for (EventSource eventSource : eventSources) {
48-
eventSourceMap.put(generateNameFor(eventSource), eventSource);
49-
}
50-
return eventSourceMap;
51-
}
52-
53-
@SuppressWarnings("unchecked")
54-
static <K extends HasMetadata> Map<String, EventSource> eventSourcesFromWorkflow(
55-
EventSourceContext<K> context,
56-
Workflow<K> workflow) {
57-
Map<String, EventSource> result = new HashMap<>();
58-
for (var e : workflow.getDependentResourcesByNameWithoutActivationCondition().entrySet()) {
59-
var eventSource = e.getValue().eventSource(context);
60-
eventSource.ifPresent(es -> result.put(e.getKey(), (EventSource) es));
61-
}
62-
return result;
63-
}
64-
65-
@SuppressWarnings("rawtypes")
66-
static <K extends HasMetadata> Map<String, EventSource> nameEventSourcesFromDependentResource(
67-
EventSourceContext<K> context, DependentResource... dependentResources) {
68-
return nameEventSourcesFromDependentResource(context, Arrays.asList(dependentResources));
69-
}
70-
71-
@SuppressWarnings("unchecked,rawtypes")
72-
static <K extends HasMetadata> Map<String, EventSource> nameEventSourcesFromDependentResource(
73-
EventSourceContext<K> context, Collection<DependentResource> dependentResources) {
74-
75-
if (dependentResources != null) {
76-
Map<String, EventSource> eventSourceMap = new HashMap<>(dependentResources.size());
77-
for (DependentResource dependentResource : dependentResources) {
78-
Optional<ResourceEventSource> es = dependentResource.eventSource(context);
79-
es.ifPresent(e -> eventSourceMap.put(generateNameFor(e), e));
80-
}
81-
return eventSourceMap;
82-
} else {
83-
return Collections.emptyMap();
84-
}
85-
}
86-
87-
/**
88-
* Used when event sources are not explicitly named when created/registered.
89-
*
90-
* @param eventSource EventSource
91-
* @return generated name
92-
*/
93-
static String generateNameFor(EventSource eventSource) {
94-
// we can have multiple event sources for the same class
95-
return eventSource.getClass().getName() + "#" + eventSource.hashCode();
96-
}
9735
}

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager;
1515
import io.javaoperatorsdk.operator.api.config.NamespaceChangeable;
1616
import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext;
17-
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
17+
import io.javaoperatorsdk.operator.api.reconciler.EventSourceUtils;
1818
import io.javaoperatorsdk.operator.processing.Controller;
1919
import io.javaoperatorsdk.operator.processing.LifecycleAware;
2020
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
@@ -150,7 +150,7 @@ public final synchronized void registerEventSource(String name, EventSource even
150150
Objects.requireNonNull(eventSource, "EventSource must not be null");
151151
try {
152152
if (name == null || name.isBlank()) {
153-
name = Reconciler.generateNameFor(eventSource);
153+
name = EventSourceUtils.generateNameFor(eventSource);
154154
}
155155
if (eventSource instanceof ManagedInformerEventSource) {
156156
var managedInformerEventSource = ((ManagedInformerEventSource) eventSource);

Diff for: operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/NamedEventSource.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import java.util.Optional;
55

66
import io.javaoperatorsdk.operator.OperatorException;
7-
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
7+
import io.javaoperatorsdk.operator.api.reconciler.EventSourceUtils;
88
import io.javaoperatorsdk.operator.processing.event.source.Configurable;
99
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
1010
import io.javaoperatorsdk.operator.processing.event.source.EventSourceStartPriority;
@@ -19,7 +19,7 @@ class NamedEventSource implements EventSource, EventSourceMetadata {
1919
NamedEventSource(EventSource original, String name) {
2020
this.original = original;
2121
this.name = name;
22-
nameSet = !name.equals(Reconciler.generateNameFor(original));
22+
nameSet = !name.equals(EventSourceUtils.generateNameFor(original));
2323
}
2424

2525
@Override

Diff for: operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceInitializerTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class EventSourceInitializerTest {
1515
void defaultNameDifferentForOtherInstance() {
1616
var eventSource1 = new PollingEventSource(HashMap::new, 1000, String.class);
1717
var eventSource2 = new PollingEventSource(HashMap::new, 1000, String.class);
18-
var eventSourceName1 = Reconciler.generateNameFor(eventSource1);
19-
var eventSourceName2 = Reconciler.generateNameFor(eventSource2);
18+
var eventSourceName1 = EventSourceUtils.generateNameFor(eventSource1);
19+
var eventSourceName2 = EventSourceUtils.generateNameFor(eventSource2);
2020

2121
assertThat(eventSourceName1).isNotEqualTo(eventSourceName2);
2222
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/StandaloneBulkDependentReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public int getNumberOfExecutions() {
3737
@Override
3838
public Map<String, EventSource> prepareEventSources(
3939
EventSourceContext<BulkDependentTestCustomResource> context) {
40-
return Reconciler
40+
return EventSourceUtils
4141
.nameEventSources(dependent.initEventSource(context));
4242
}
4343
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/changenamespace/ChangeNamespaceTestReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public Map<String, EventSource> prepareEventSources(
2626
new InformerEventSource<>(InformerConfiguration.from(ConfigMap.class, context)
2727
.build(), context);
2828

29-
return Reconciler.nameEventSources(configMapES);
29+
return EventSourceUtils.nameEventSources(configMapES);
3030
}
3131

3232
@Override

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/clusterscopedresource/ClusterScopedCustomResourceReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,6 @@ public Map<String, EventSource> prepareEventSources(
5858
.withSecondaryToPrimaryMapper(Mappers.fromOwnerReference(true))
5959
.withLabelSelector(TEST_LABEL_KEY + "=" + TEST_LABEL_VALUE)
6060
.build(), context);
61-
return Reconciler.nameEventSources(ies);
61+
return EventSourceUtils.nameEventSources(ies);
6262
}
6363
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public Map<String, EventSource> prepareEventSources(
9696
informerEventSource = new InformerEventSource<>(informerConfiguration, context.getClient());
9797
this.configMapDR.setEventSource(informerEventSource);
9898

99-
return Reconciler.nameEventSources(informerEventSource);
99+
return EventSourceUtils.nameEventSources(informerEventSource);
100100
}
101101

102102
public int getNumberOfExecutions() {

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentreinitialization/DependentReInitializationReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public UpdateControl<DependentReInitializationCustomResource> reconcile(
2626
@Override
2727
public Map<String, EventSource> prepareEventSources(
2828
EventSourceContext<DependentReInitializationCustomResource> context) {
29-
return Reconciler.nameEventSourcesFromDependentResource(context,
29+
return EventSourceUtils.nameEventSourcesFromDependentResource(context,
3030
configMapDependentResource);
3131
}
3232

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentssa/DependentSSAReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public int getNumberOfExecutions() {
4444
@Override
4545
public Map<String, EventSource> prepareEventSources(
4646
EventSourceContext<DependnetSSACustomResource> context) {
47-
return Reconciler.nameEventSourcesFromDependentResource(context,
47+
return EventSourceUtils.nameEventSourcesFromDependentResource(context,
4848
ssaConfigMapDependent);
4949
}
5050
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/externalstate/ExternalStateDependentReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public Map<String, EventSource> prepareEventSources(
3838
EventSourceContext<ExternalStateCustomResource> context) {
3939
var configMapEventSource = new InformerEventSource<>(
4040
InformerConfiguration.from(ConfigMap.class, context).build(), context);
41-
return Reconciler.nameEventSources(configMapEventSource);
41+
return EventSourceUtils.nameEventSources(configMapEventSource);
4242
}
4343

4444
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/externalstate/ExternalStateReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public Map<String, EventSource> prepareEventSources(
115115
return externalResource.map(Set::of).orElseGet(Collections::emptySet);
116116
}, context, Duration.ofMillis(300L), ExternalResource.class);
117117

118-
return Reconciler.nameEventSources(configMapEventSource,
118+
return EventSourceUtils.nameEventSources(configMapEventSource,
119119
externalResourceEventSource);
120120
}
121121
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/externalstate/externalstatebulkdependent/ExternalStateBulkDependentReconciler.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@
55

66
import io.fabric8.kubernetes.api.model.ConfigMap;
77
import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
8-
import io.javaoperatorsdk.operator.api.reconciler.Context;
9-
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
10-
import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext;
11-
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
12-
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
8+
import io.javaoperatorsdk.operator.api.reconciler.*;
139
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;
1410
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
1511
import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource;
@@ -41,7 +37,7 @@ public Map<String, EventSource> prepareEventSources(
4137
EventSourceContext<ExternalStateBulkDependentCustomResource> context) {
4238
var configMapEventSource = new InformerEventSource<>(
4339
InformerConfiguration.from(ConfigMap.class, context).build(), context);
44-
return Reconciler.nameEventSources(configMapEventSource);
40+
return EventSourceUtils.nameEventSources(configMapEventSource);
4541
}
4642

4743
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/filter/FilterTestReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,6 @@ public Map<String, EventSource> prepareEventSources(
5858
.equals(CONFIG_MAP_FILTER_VALUE))
5959
.build(), context);
6060

61-
return Reconciler.nameEventSources(configMapES);
61+
return EventSourceUtils.nameEventSources(configMapES);
6262
}
6363
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesdependentstandalone/GenericKubernetesDependentStandaloneReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ public UpdateControl<GenericKubernetesDependentStandaloneCustomResource> reconci
2727
@Override
2828
public Map<String, EventSource> prepareEventSources(
2929
EventSourceContext<GenericKubernetesDependentStandaloneCustomResource> context) {
30-
return Reconciler.nameEventSources(dependent.eventSource(context).orElseThrow());
30+
return EventSourceUtils.nameEventSources(dependent.eventSource(context).orElseThrow());
3131
}
3232
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesresourcehandling/GenericKubernetesResourceHandlingReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,6 @@ public Map<String, EventSource> prepareEventSources(
7171
new GroupVersionKind("", VERSION, KIND), context).build(),
7272
context);
7373

74-
return Reconciler.nameEventSources(informerEventSource);
74+
return EventSourceUtils.nameEventSources(informerEventSource);
7575
}
7676
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/indexdiscriminator/IndexDiscriminatorTestReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public Map<String, EventSource> prepareEventSources(
8181
secondDependentResourceConfigMap
8282
.setResourceDiscriminator(
8383
new TestIndexDiscriminator(CONFIG_MAP_INDEX_2, FIRST_CONFIG_MAP_SUFFIX_2));
84-
return Reconciler.nameEventSources(eventSource);
84+
return EventSourceUtils.nameEventSources(eventSource);
8585
}
8686

8787
public static String configMapKey(ConfigMap configMap) {

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@
99

1010
import io.fabric8.kubernetes.api.model.ConfigMap;
1111
import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
12-
import io.javaoperatorsdk.operator.api.reconciler.Context;
13-
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
14-
import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext;
15-
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
16-
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
12+
import io.javaoperatorsdk.operator.api.reconciler.*;
1713
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
1814
import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource;
1915
import io.javaoperatorsdk.operator.processing.event.source.informer.Mappers;
@@ -44,7 +40,7 @@ public Map<String, EventSource> prepareEventSources(
4440
.withSecondaryToPrimaryMapper(Mappers.fromAnnotation(RELATED_RESOURCE_NAME))
4541
.build();
4642

47-
return Reconciler
43+
return EventSourceUtils
4844
.nameEventSources(new InformerEventSource<>(config, context));
4945
}
5046

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/kubernetesdependentgarbagecollection/DependentGarbageCollectionTestReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public DependentGarbageCollectionTestReconciler() {
3030
@Override
3131
public Map<String, EventSource> prepareEventSources(
3232
EventSourceContext<DependentGarbageCollectionTestCustomResource> context) {
33-
return Reconciler.nameEventSourcesFromDependentResource(context,
33+
return EventSourceUtils.nameEventSourcesFromDependentResource(context,
3434
configMapDependent);
3535
}
3636

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multipledependentresource/MultipleDependentResourceReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,6 @@ public Map<String, EventSource> prepareEventSources(
6464
firstDependentResourceConfigMap.configureWith(eventSource);
6565
secondDependentResourceConfigMap.configureWith(eventSource);
6666

67-
return Reconciler.nameEventSources(eventSource);
67+
return EventSourceUtils.nameEventSources(eventSource);
6868
}
6969
}

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public Map<String, EventSource> prepareEventSources(
7575
}).build();
7676
InformerEventSource<ConfigMap, MultipleSecondaryEventSourceCustomResource> configMapEventSource =
7777
new InformerEventSource<>(config, context);
78-
return Reconciler.nameEventSources(configMapEventSource);
78+
return EventSourceUtils.nameEventSources(configMapEventSource);
7979
}
8080

8181
ConfigMap configMap(String name, MultipleSecondaryEventSourceCustomResource resource) {

Diff for: operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/perresourceeventsource/PerResourcePollingEventSourceTestReconciler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public Map<String, EventSource> prepareEventSources(
3737
return Set.of(UUID.randomUUID().toString());
3838
},
3939
context, Duration.ofMillis(POLL_PERIOD), String.class);
40-
return Reconciler.nameEventSources(eventSource);
40+
return EventSourceUtils.nameEventSources(eventSource);
4141
}
4242

4343
public int getNumberOfExecutions(String name) {

0 commit comments

Comments
 (0)