|
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