|
1 | 1 | package io.javaoperatorsdk.operator.sample;
|
2 | 2 |
|
3 | 3 | import java.util.Map;
|
4 |
| -import java.util.Map.Entry; |
5 |
| -import java.util.stream.Collectors; |
6 | 4 |
|
7 | 5 | import org.slf4j.Logger;
|
8 | 6 | import org.slf4j.LoggerFactory;
|
9 | 7 |
|
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; |
11 | 11 | import io.fabric8.kubernetes.client.KubernetesClient;
|
12 | 12 | import io.javaoperatorsdk.operator.api.reconciler.Context;
|
13 | 13 | import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
|
@@ -37,50 +37,54 @@ public class WebPageStandaloneDependentsReconciler
|
37 | 37 | private static final Logger log =
|
38 | 38 | LoggerFactory.getLogger(WebPageStandaloneDependentsReconciler.class);
|
39 | 39 |
|
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; |
41 | 43 |
|
42 | 44 | 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); |
53 | 46 | }
|
54 | 47 |
|
55 | 48 | @Override
|
56 | 49 | 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)); |
59 | 52 | }
|
60 | 53 |
|
61 | 54 | @Override
|
62 | 55 | public UpdateControl<WebPage> reconcile(WebPage webPage, Context<WebPage> context)
|
63 | 56 | throws Exception {
|
64 | 57 | simulateErrorIfRequested(webPage);
|
65 | 58 |
|
66 |
| - dependentResources.values().forEach(dr -> dr.reconcile(webPage, context)); |
| 59 | + configMapDR.reconcile(webPage, context); |
| 60 | + deploymentDR.reconcile(webPage, context); |
| 61 | + serviceDR.reconcile(webPage, context); |
67 | 62 |
|
68 |
| - webPage.setStatus(createStatus(getConfigMapName(webPage))); |
| 63 | + webPage.setStatus( |
| 64 | + createStatus(configMapDR.getResource(webPage).orElseThrow().getMetadata().getName())); |
69 | 65 | return UpdateControl.updateStatus(webPage);
|
70 | 66 | }
|
71 | 67 |
|
72 |
| - private String getConfigMapName(WebPage webPage) { |
73 |
| - return dependent("configmap").getAssociatedResource(webPage).orElseThrow().getMetadata() |
74 |
| - .getName(); |
75 |
| - } |
76 |
| - |
77 | 68 | @Override
|
78 | 69 | public ErrorStatusUpdateControl<WebPage> updateErrorStatus(
|
79 | 70 | WebPage resource, Context<WebPage> retryInfo, Exception e) {
|
80 | 71 | return handleError(resource, e);
|
81 | 72 | }
|
82 | 73 |
|
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)); |
85 | 89 | }
|
86 | 90 | }
|
0 commit comments