Skip to content

Commit fe9f9e7

Browse files
committed
feat: utility method for event source default names
1 parent ab23a2c commit fe9f9e7

File tree

7 files changed

+47
-30
lines changed

7 files changed

+47
-30
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.javaoperatorsdk.operator.api.reconciler;
22

3+
import java.util.HashMap;
34
import java.util.Map;
45

56
import io.fabric8.kubernetes.api.model.HasMetadata;
@@ -23,4 +24,12 @@ public interface EventSourceInitializer<P extends HasMetadata> {
2324
*/
2425
Map<String, EventSource> prepareEventSources(EventSourceContext<P> context);
2526

27+
static Map<String, EventSource> defaultNamedEventSources(EventSource... eventSources) {
28+
Map<String, EventSource> eventSourceMap = new HashMap<>(eventSources.length);
29+
for (EventSource eventSource : eventSources) {
30+
eventSourceMap.put(EventSource.defaultNameFor(eventSource), eventSource);
31+
}
32+
return eventSourceMap;
33+
}
34+
2635
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public Map<String, EventSource> prepareEventSources(
106106
.withLabelSelector("integrationtest = " + this.getClass().getSimpleName())
107107
.build();
108108
informerEventSource = new InformerEventSource<>(informerConfiguration, client);
109-
return Map.of("test-informer", informerEventSource);
109+
return EventSourceInitializer.defaultNamedEventSources(informerEventSource);
110110
}
111111

112112
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ public Map<String, EventSource> prepareEventSources(
4646
.withPrimaryResourcesRetriever(Mappers.fromAnnotation(RELATED_RESOURCE_NAME))
4747
.build();
4848

49-
return Map.of("test-informer", new InformerEventSource<>(config, context));
49+
return EventSourceInitializer
50+
.defaultNamedEventSources(new InformerEventSource<>(config, context));
5051
}
5152

5253
@Override

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/standalonedependent/StandaloneDependentTestReconciler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ public StandaloneDependentTestReconciler() {
3939
@Override
4040
public Map<String, EventSource> prepareEventSources(
4141
EventSourceContext<StandaloneDependentTestCustomResource> context) {
42-
return Map.of("deployment", deploymentDependent.initEventSource(context));
42+
return EventSourceInitializer
43+
.defaultNamedEventSources(deploymentDependent.initEventSource(context));
4344
}
4445

4546
@Override

sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ public Map<String, EventSource> prepareEventSources(EventSourceContext<Webapp> c
7272
.withPrimaryResourcesRetriever(webappsMatchingTomcatName)
7373
.withAssociatedSecondaryResourceIdentifier(tomcatFromWebAppSpec)
7474
.build();
75-
return Map.of("tomcat-informer", new InformerEventSource<>(configuration, context));
75+
return EventSourceInitializer
76+
.defaultNamedEventSources(new InformerEventSource<>(configuration, context));
7677
}
7778

7879
/**

sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ public Map<String, EventSource> prepareEventSources(EventSourceContext<WebPage>
6565
new InformerEventSource<>(InformerConfiguration.from(context, Service.class)
6666
.withLabelSelector(LOW_LEVEL_LABEL_KEY)
6767
.build(), context);
68-
return Map.of("configmap", configMapEventSource, "deployment", deploymentEventSource, "service",
68+
return EventSourceInitializer.defaultNamedEventSources(configMapEventSource,
69+
deploymentEventSource,
6970
serviceEventSource);
7071
}
7172

Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package io.javaoperatorsdk.operator.sample;
22

33
import java.util.Map;
4-
import java.util.Map.Entry;
5-
import java.util.stream.Collectors;
64

75
import org.slf4j.Logger;
86
import org.slf4j.LoggerFactory;
97

10-
import io.fabric8.kubernetes.api.model.HasMetadata;
8+
import io.fabric8.kubernetes.api.model.ConfigMap;
9+
import io.fabric8.kubernetes.api.model.Service;
10+
import io.fabric8.kubernetes.api.model.apps.Deployment;
1111
import io.fabric8.kubernetes.client.KubernetesClient;
1212
import io.javaoperatorsdk.operator.api.reconciler.Context;
1313
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
@@ -37,50 +37,54 @@ public class WebPageStandaloneDependentsReconciler
3737
private static final Logger log =
3838
LoggerFactory.getLogger(WebPageStandaloneDependentsReconciler.class);
3939

40-
private final Map<String, KubernetesDependentResource<?, WebPage>> dependentResources;
40+
private KubernetesDependentResource<ConfigMap, WebPage> configMapDR;
41+
private KubernetesDependentResource<Deployment, WebPage> deploymentDR;
42+
private KubernetesDependentResource<Service, WebPage> serviceDR;
4143

4244
public WebPageStandaloneDependentsReconciler(KubernetesClient kubernetesClient) {
43-
dependentResources = Map.of(
44-
"configmap", new ConfigMapDependentResource(),
45-
"deployment", new DeploymentDependentResource(),
46-
"service", new ServiceDependentResource());
47-
final var config = new KubernetesDependentResourceConfig()
48-
.setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR);
49-
dependentResources.values().forEach(dr -> {
50-
dr.setKubernetesClient(kubernetesClient);
51-
dr.configureWith(config);
52-
});
45+
createDependentResources(kubernetesClient);
5346
}
5447

5548
@Override
5649
public Map<String, EventSource> prepareEventSources(EventSourceContext<WebPage> context) {
57-
return dependentResources.entrySet().stream()
58-
.collect(Collectors.toUnmodifiableMap(Entry::getKey, Entry::getValue));
50+
return EventSourceInitializer.defaultNamedEventSources(configMapDR.initEventSource(context),
51+
deploymentDR.initEventSource(context), serviceDR.initEventSource(context));
5952
}
6053

6154
@Override
6255
public UpdateControl<WebPage> reconcile(WebPage webPage, Context<WebPage> context)
6356
throws Exception {
6457
simulateErrorIfRequested(webPage);
6558

66-
dependentResources.values().forEach(dr -> dr.reconcile(webPage, context));
59+
configMapDR.reconcile(webPage, context);
60+
deploymentDR.reconcile(webPage, context);
61+
serviceDR.reconcile(webPage, context);
6762

68-
webPage.setStatus(createStatus(getConfigMapName(webPage)));
63+
webPage.setStatus(
64+
createStatus(configMapDR.getResource(webPage).orElseThrow().getMetadata().getName()));
6965
return UpdateControl.updateStatus(webPage);
7066
}
7167

72-
private String getConfigMapName(WebPage webPage) {
73-
return dependent("configmap").getAssociatedResource(webPage).orElseThrow().getMetadata()
74-
.getName();
75-
}
76-
7768
@Override
7869
public ErrorStatusUpdateControl<WebPage> updateErrorStatus(
7970
WebPage resource, Context<WebPage> retryInfo, Exception e) {
8071
return handleError(resource, e);
8172
}
8273

83-
private KubernetesDependentResource<? extends HasMetadata, WebPage> dependent(String name) {
84-
return dependentResources.get(name);
74+
private void createDependentResources(KubernetesClient client) {
75+
this.configMapDR = new ConfigMapDependentResource();
76+
this.configMapDR.setKubernetesClient(client);
77+
configMapDR.configureWith(new KubernetesDependentResourceConfig()
78+
.setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR));
79+
80+
this.deploymentDR = new DeploymentDependentResource();
81+
deploymentDR.setKubernetesClient(client);
82+
deploymentDR.configureWith(new KubernetesDependentResourceConfig()
83+
.setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR));
84+
85+
this.serviceDR = new ServiceDependentResource();
86+
serviceDR.setKubernetesClient(client);
87+
serviceDR.configureWith(new KubernetesDependentResourceConfig()
88+
.setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR));
8589
}
8690
}

0 commit comments

Comments
 (0)