Skip to content

Commit b2854e4

Browse files
committed
refactor: simplify WorkflowBuilder, clean up docs
1 parent 3a863f6 commit b2854e4

File tree

7 files changed

+285
-285
lines changed

7 files changed

+285
-285
lines changed

docs/documentation/workflows.md

Lines changed: 153 additions & 119 deletions
Large diffs are not rendered by default.

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/builder/DependentBuilder.java

Lines changed: 0 additions & 57 deletions
This file was deleted.

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/builder/WorkflowBuilder.java

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package io.javaoperatorsdk.operator.processing.dependent.workflow.builder;
22

3+
import java.util.Arrays;
34
import java.util.HashSet;
45
import java.util.Set;
56
import java.util.concurrent.ExecutorService;
67

78
import io.fabric8.kubernetes.api.model.HasMetadata;
89
import io.javaoperatorsdk.operator.api.config.ConfigurationServiceProvider;
910
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
11+
import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition;
1012
import io.javaoperatorsdk.operator.processing.dependent.workflow.DependentResourceNode;
1113
import io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow;
1214

@@ -18,14 +20,42 @@ public class WorkflowBuilder<P extends HasMetadata> {
1820
private final Set<DependentResourceNode<?, P>> dependentResourceNodes = new HashSet<>();
1921
private boolean throwExceptionAutomatically = THROW_EXCEPTION_AUTOMATICALLY_DEFAULT;
2022

21-
public DependentBuilder<P> addDependentResource(DependentResource dependentResource) {
22-
DependentResourceNode node = new DependentResourceNode<>(dependentResource);
23-
dependentResourceNodes.add(node);
24-
return new DependentBuilder<>(this, node);
23+
private DependentResourceNode currentNode;
24+
25+
public WorkflowBuilder<P> addDependentResource(DependentResource dependentResource) {
26+
currentNode = new DependentResourceNode<>(dependentResource);
27+
dependentResourceNodes.add(currentNode);
28+
return this;
29+
}
30+
31+
public WorkflowBuilder<P> dependsOn(Set<DependentResource> dependentResources) {
32+
for (var dependentResource : dependentResources) {
33+
var dependsOn = getNodeByDependentResource(dependentResource);
34+
currentNode.addDependsOnRelation(dependsOn);
35+
}
36+
return this;
37+
}
38+
39+
public WorkflowBuilder<P> dependsOn(DependentResource... dependentResources) {
40+
if (dependentResources != null) {
41+
return dependsOn(new HashSet<>(Arrays.asList(dependentResources)));
42+
}
43+
return this;
2544
}
2645

27-
void addDependentResourceNode(DependentResourceNode node) {
28-
dependentResourceNodes.add(node);
46+
public WorkflowBuilder<P> withReconcilePrecondition(Condition reconcilePrecondition) {
47+
currentNode.setReconcilePrecondition(reconcilePrecondition);
48+
return this;
49+
}
50+
51+
public WorkflowBuilder<P> withReadyPostcondition(Condition readyPostcondition) {
52+
currentNode.setReadyPostcondition(readyPostcondition);
53+
return this;
54+
}
55+
56+
public WorkflowBuilder<P> withDeletePostcondition(Condition deletePostcondition) {
57+
currentNode.setDeletePostcondition(deletePostcondition);
58+
return this;
2959
}
3060

3161
DependentResourceNode getNodeByDependentResource(DependentResource<?, ?> dependentResource) {

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowCleanupExecutorTest.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ class WorkflowCleanupExecutorTest extends AbstractWorkflowExecutorTest {
1919
@Test
2020
void cleanUpDiamondWorkflow() {
2121
var workflow = new WorkflowBuilder<TestCustomResource>()
22-
.addDependentResource(dd1).build()
23-
.addDependentResource(dr1).dependsOn(dd1).build()
24-
.addDependentResource(dd2).dependsOn(dd1).build()
25-
.addDependentResource(dd3).dependsOn(dr1, dd2).build()
22+
.addDependentResource(dd1)
23+
.addDependentResource(dr1).dependsOn(dd1)
24+
.addDependentResource(dd2).dependsOn(dd1)
25+
.addDependentResource(dd3).dependsOn(dr1, dd2)
2626
.build();
2727

2828
var res = workflow.cleanup(new TestCustomResource(), null);
@@ -38,10 +38,10 @@ void cleanUpDiamondWorkflow() {
3838
@Test
3939
void dontDeleteIfDependentErrored() {
4040
var workflow = new WorkflowBuilder<TestCustomResource>()
41-
.addDependentResource(dd1).build()
42-
.addDependentResource(dd2).dependsOn(dd1).build()
43-
.addDependentResource(dd3).dependsOn(dd2).build()
44-
.addDependentResource(errorDD).dependsOn(dd2).build()
41+
.addDependentResource(dd1)
42+
.addDependentResource(dd2).dependsOn(dd1)
43+
.addDependentResource(dd3).dependsOn(dd2)
44+
.addDependentResource(errorDD).dependsOn(dd2)
4545
.withThrowExceptionFurther(false)
4646
.build();
4747

@@ -60,9 +60,8 @@ void dontDeleteIfDependentErrored() {
6060
@Test
6161
void cleanupConditionTrivialCase() {
6262
var workflow = new WorkflowBuilder<TestCustomResource>()
63-
.addDependentResource(dd1).build()
63+
.addDependentResource(dd1)
6464
.addDependentResource(dd2).dependsOn(dd1).withDeletePostcondition(noMetDeletePostCondition)
65-
.build()
6665
.build();
6766

6867
var res = workflow.cleanup(new TestCustomResource(), null);
@@ -76,9 +75,8 @@ void cleanupConditionTrivialCase() {
7675
@Test
7776
void cleanupConditionMet() {
7877
var workflow = new WorkflowBuilder<TestCustomResource>()
79-
.addDependentResource(dd1).build()
78+
.addDependentResource(dd1)
8079
.addDependentResource(dd2).dependsOn(dd1).withDeletePostcondition(metDeletePostCondition)
81-
.build()
8280
.build();
8381

8482
var res = workflow.cleanup(new TestCustomResource(), null);
@@ -95,11 +93,10 @@ void cleanupConditionDiamondWorkflow() {
9593
TestDeleterDependent dd4 = new TestDeleterDependent("DR_DELETER_4");
9694

9795
var workflow = new WorkflowBuilder<TestCustomResource>()
98-
.addDependentResource(dd1).build()
99-
.addDependentResource(dd2).dependsOn(dd1).build()
96+
.addDependentResource(dd1)
97+
.addDependentResource(dd2).dependsOn(dd1)
10098
.addDependentResource(dd3).dependsOn(dd1).withDeletePostcondition(noMetDeletePostCondition)
101-
.build()
102-
.addDependentResource(dd4).dependsOn(dd2, dd3).build()
99+
.addDependentResource(dd4).dependsOn(dd2, dd3)
103100
.build();
104101

105102
var res = workflow.cleanup(new TestCustomResource(), null);
@@ -119,7 +116,7 @@ void cleanupConditionDiamondWorkflow() {
119116
void dontDeleteIfGarbageCollected() {
120117
GarbageCollectedDeleter gcDel = new GarbageCollectedDeleter("GC_DELETER");
121118
var workflow = new WorkflowBuilder<TestCustomResource>()
122-
.addDependentResource(gcDel).build()
119+
.addDependentResource(gcDel)
123120
.build();
124121

125122
var res = workflow.cleanup(new TestCustomResource(), null);

0 commit comments

Comments
 (0)