|
5 | 5 | import org.slf4j.Logger;
|
6 | 6 | import org.slf4j.LoggerFactory;
|
7 | 7 |
|
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; |
| 8 | +import io.fabric8.kubernetes.api.model.HasMetadata; |
11 | 9 | import io.fabric8.kubernetes.client.KubernetesClient;
|
12 | 10 | import io.javaoperatorsdk.operator.api.reconciler.Context;
|
13 | 11 | import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
|
@@ -37,56 +35,50 @@ public class WebPageStandaloneDependentsReconciler
|
37 | 35 | private static final Logger log =
|
38 | 36 | LoggerFactory.getLogger(WebPageStandaloneDependentsReconciler.class);
|
39 | 37 |
|
40 |
| - private KubernetesDependentResource<ConfigMap, WebPage> configMapDR; |
41 |
| - private KubernetesDependentResource<Deployment, WebPage> deploymentDR; |
42 |
| - private KubernetesDependentResource<Service, WebPage> serviceDR; |
| 38 | + private final Map<String, KubernetesDependentResource<?, WebPage>> dependentResources; |
43 | 39 |
|
44 | 40 | public WebPageStandaloneDependentsReconciler(KubernetesClient kubernetesClient) {
|
45 |
| - createDependentResources(kubernetesClient); |
| 41 | + dependentResources = Map.of( |
| 42 | + "configmap", new ConfigMapDependentResource(), |
| 43 | + "deployment", new DeploymentDependentResource(), |
| 44 | + "service", new ServiceDependentResource()); |
| 45 | + final var config = new KubernetesDependentResourceConfig() |
| 46 | + .setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR); |
| 47 | + dependentResources.values().forEach(dr -> { |
| 48 | + dr.setKubernetesClient(kubernetesClient); |
| 49 | + dr.configureWith(config); |
| 50 | + }); |
46 | 51 | }
|
47 | 52 |
|
48 | 53 | @Override
|
49 |
| - public Map<String, EventSource> prepareEventSources(EventSourceContext<WebPage> context) { |
50 |
| - return Map.of( |
51 |
| - "configmap", configMapDR.initEventSource(context), |
52 |
| - "deployment", deploymentDR.initEventSource(context), |
53 |
| - "service", serviceDR.initEventSource(context)); |
| 54 | + public Map<String, ? extends EventSource> prepareEventSources( |
| 55 | + EventSourceContext<WebPage> context) { |
| 56 | + dependentResources.values().forEach(dr -> dr.initEventSource(context)); |
| 57 | + return dependentResources; |
54 | 58 | }
|
55 | 59 |
|
56 | 60 | @Override
|
57 | 61 | public UpdateControl<WebPage> reconcile(WebPage webPage, Context<WebPage> context)
|
58 | 62 | throws Exception {
|
59 | 63 | simulateErrorIfRequested(webPage);
|
60 | 64 |
|
61 |
| - configMapDR.reconcile(webPage, context); |
62 |
| - deploymentDR.reconcile(webPage, context); |
63 |
| - serviceDR.reconcile(webPage, context); |
| 65 | + dependentResources.values().forEach(dr -> dr.reconcile(webPage, context)); |
64 | 66 |
|
65 |
| - webPage.setStatus( |
66 |
| - createStatus(configMapDR.getResource(webPage).orElseThrow().getMetadata().getName())); |
| 67 | + webPage.setStatus(createStatus(getConfigMapName(webPage))); |
67 | 68 | return UpdateControl.updateStatus(webPage);
|
68 | 69 | }
|
69 | 70 |
|
| 71 | + private String getConfigMapName(WebPage webPage) { |
| 72 | + return dependent("configmap").getResource(webPage).orElseThrow().getMetadata().getName(); |
| 73 | + } |
| 74 | + |
70 | 75 | @Override
|
71 | 76 | public ErrorStatusUpdateControl<WebPage> updateErrorStatus(
|
72 | 77 | WebPage resource, Context<WebPage> retryInfo, Exception e) {
|
73 | 78 | return handleError(resource, e);
|
74 | 79 | }
|
75 | 80 |
|
76 |
| - private void createDependentResources(KubernetesClient client) { |
77 |
| - this.configMapDR = new ConfigMapDependentResource(); |
78 |
| - this.configMapDR.setKubernetesClient(client); |
79 |
| - configMapDR.configureWith(new KubernetesDependentResourceConfig() |
80 |
| - .setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR)); |
81 |
| - |
82 |
| - this.deploymentDR = new DeploymentDependentResource(); |
83 |
| - deploymentDR.setKubernetesClient(client); |
84 |
| - deploymentDR.configureWith(new KubernetesDependentResourceConfig() |
85 |
| - .setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR)); |
86 |
| - |
87 |
| - this.serviceDR = new ServiceDependentResource(); |
88 |
| - serviceDR.setKubernetesClient(client); |
89 |
| - serviceDR.configureWith(new KubernetesDependentResourceConfig() |
90 |
| - .setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR)); |
| 81 | + private KubernetesDependentResource<? extends HasMetadata, WebPage> dependent(String name) { |
| 82 | + return dependentResources.get(name); |
91 | 83 | }
|
92 | 84 | }
|
0 commit comments