7
7
import org .slf4j .LoggerFactory ;
8
8
9
9
import io .fabric8 .kubernetes .api .model .ConfigMap ;
10
- import io .fabric8 .kubernetes .api .model .Service ;
11
- import io .fabric8 .kubernetes .api .model .apps .Deployment ;
12
- import io .fabric8 .kubernetes .api .model .networking .v1 .Ingress ;
13
- import io .fabric8 .kubernetes .client .KubernetesClient ;
14
10
import io .javaoperatorsdk .operator .api .reconciler .*;
15
- import io .javaoperatorsdk .operator .processing .dependent .kubernetes .KubernetesDependentResource ;
16
11
import io .javaoperatorsdk .operator .processing .dependent .kubernetes .KubernetesDependentResourceConfigBuilder ;
12
+ import io .javaoperatorsdk .operator .processing .dependent .workflow .Workflow ;
13
+ import io .javaoperatorsdk .operator .processing .dependent .workflow .WorkflowBuilder ;
17
14
import io .javaoperatorsdk .operator .processing .event .source .EventSource ;
18
15
import io .javaoperatorsdk .operator .sample .customresource .WebPage ;
19
- import io .javaoperatorsdk .operator .sample .dependentresource .ConfigMapDependentResource ;
20
- import io .javaoperatorsdk .operator .sample .dependentresource .DeploymentDependentResource ;
21
- import io .javaoperatorsdk .operator .sample .dependentresource .IngressDependentResource ;
22
- import io .javaoperatorsdk .operator .sample .dependentresource .ServiceDependentResource ;
16
+ import io .javaoperatorsdk .operator .sample .dependentresource .*;
23
17
24
18
import static io .javaoperatorsdk .operator .sample .Utils .*;
25
19
import static io .javaoperatorsdk .operator .sample .WebPageManagedDependentsReconciler .SELECTOR ;
@@ -34,19 +28,15 @@ public class WebPageStandaloneDependentsReconciler
34
28
private static final Logger log =
35
29
LoggerFactory .getLogger (WebPageStandaloneDependentsReconciler .class );
36
30
37
- private KubernetesDependentResource <ConfigMap , WebPage > configMapDR ;
38
- private KubernetesDependentResource <Deployment , WebPage > deploymentDR ;
39
- private KubernetesDependentResource <Service , WebPage > serviceDR ;
40
- private KubernetesDependentResource <Ingress , WebPage > ingressDR ;
31
+ private Workflow <WebPage > workflow ;
41
32
42
- public WebPageStandaloneDependentsReconciler (KubernetesClient kubernetesClient ) {
43
- createDependentResources ( kubernetesClient );
33
+ public WebPageStandaloneDependentsReconciler () {
34
+ workflow = createDependentResourcesAndWorkflow ( );
44
35
}
45
36
46
37
@ Override
47
38
public Map <String , EventSource > prepareEventSources (EventSourceContext <WebPage > context ) {
48
- return EventSourceInitializer .nameEventSourcesFromDependentResource (context , configMapDR ,
49
- deploymentDR , serviceDR , ingressDR );
39
+ return EventSourceInitializer .eventSourcesFromWorkflow (context , workflow );
50
40
}
51
41
52
42
@ Override
@@ -58,14 +48,7 @@ public UpdateControl<WebPage> reconcile(WebPage webPage, Context<WebPage> contex
58
48
return UpdateControl .patchStatus (setInvalidHtmlErrorMessage (webPage ));
59
49
}
60
50
61
- Arrays .asList (configMapDR , deploymentDR , serviceDR )
62
- .forEach (dr -> dr .reconcile (webPage , context ));
63
-
64
- if (Boolean .TRUE .equals (webPage .getSpec ().getExposed ())) {
65
- ingressDR .reconcile (webPage , context );
66
- } else {
67
- ingressDR .delete (webPage , context );
68
- }
51
+ workflow .reconcile (webPage , context );
69
52
70
53
webPage .setStatus (
71
54
createStatus (
@@ -80,16 +63,23 @@ public ErrorStatusUpdateControl<WebPage> updateErrorStatus(
80
63
}
81
64
82
65
@ SuppressWarnings ({"unchecked" , "rawtypes" })
83
- private void createDependentResources (KubernetesClient client ) {
84
- this .configMapDR = new ConfigMapDependentResource ();
85
- this .deploymentDR = new DeploymentDependentResource ();
86
- this .serviceDR = new ServiceDependentResource ();
87
- this .ingressDR = new IngressDependentResource ();
88
-
89
- Arrays .asList (configMapDR , deploymentDR , serviceDR , ingressDR ).forEach (dr -> {
90
- dr .configureWith (new KubernetesDependentResourceConfigBuilder ()
91
- .withLabelSelector (SELECTOR + "=true" ).build ());
92
- });
66
+ private Workflow <WebPage > createDependentResourcesAndWorkflow () {
67
+ var configMapDR = new ConfigMapDependentResource ();
68
+ var deploymentDR = new DeploymentDependentResource ();
69
+ var serviceDR = new ServiceDependentResource ();
70
+ var ingressDR = new IngressDependentResource ();
71
+
72
+ Arrays .asList (configMapDR , deploymentDR , serviceDR , ingressDR )
73
+ .forEach (dr -> dr .configureWith (new KubernetesDependentResourceConfigBuilder ()
74
+ .withLabelSelector (SELECTOR + "=true" ).build ()));
75
+
76
+ return new WorkflowBuilder <WebPage >()
77
+ .addDependentResource (configMapDR )
78
+ .addDependentResource (deploymentDR )
79
+ .addDependentResource (serviceDR )
80
+ .addDependentResource (ingressDR )
81
+ .withReconcilePrecondition (new ExposedIngressCondition ())
82
+ .build ();
93
83
}
94
84
95
85
0 commit comments