From 4576c298b1a5d9394cba7951f2c0dacde42b6a1b Mon Sep 17 00:00:00 2001 From: xstefank Date: Wed, 24 Sep 2025 13:25:14 +0200 Subject: [PATCH] feat: allow DependentResourceNode creation override Signed-off-by: xstefank --- .../reconciler/dependent/DependentResourceFactory.java | 10 ++++++++++ .../dependent/workflow/DefaultManagedWorkflow.java | 10 ++++------ .../dependent/workflow/DependentResourceNode.java | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/DependentResourceFactory.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/DependentResourceFactory.java index 8803c15b8c..d6a2971515 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/DependentResourceFactory.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/DependentResourceFactory.java @@ -4,6 +4,7 @@ import io.javaoperatorsdk.operator.api.config.Utils; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec; import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ConfiguredDependentResource; +import io.javaoperatorsdk.operator.processing.dependent.workflow.DependentResourceNode; @SuppressWarnings({"rawtypes", "unchecked"}) public interface DependentResourceFactory< @@ -36,4 +37,13 @@ default Class associatedResourceType(D spec) { dependentResourceClass, DependentResource.class, null, null); return dr != null ? dr.resourceType() : null; } + + default DependentResourceNode createNodeFrom(D spec, DependentResource dependentResource) { + return new DependentResourceNode( + spec.getReconcileCondition(), + spec.getDeletePostCondition(), + spec.getReadyCondition(), + spec.getActivationCondition(), + dependentResource); + } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DefaultManagedWorkflow.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DefaultManagedWorkflow.java index 587c7fbdc8..ed02ef8f4e 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DefaultManagedWorkflow.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DefaultManagedWorkflow.java @@ -77,12 +77,10 @@ public Workflow

resolve(KubernetesClient client, ControllerConfiguration

c for (DependentResourceSpec spec : orderedSpecs) { final var dependentResource = resolve(spec, client, configuration); final var node = - new DependentResourceNode( - spec.getReconcileCondition(), - spec.getDeletePostCondition(), - spec.getReadyCondition(), - spec.getActivationCondition(), - dependentResource); + configuration + .getConfigurationService() + .dependentResourceFactory() + .createNodeFrom(spec, dependentResource); alreadyResolved.put(dependentResource.name(), node); spec.getDependsOn().forEach(depend -> node.addDependsOnRelation(alreadyResolved.get(depend))); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DependentResourceNode.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DependentResourceNode.java index 87646a56d9..c456b44ef2 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DependentResourceNode.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DependentResourceNode.java @@ -8,7 +8,7 @@ import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; @SuppressWarnings("rawtypes") -class DependentResourceNode { +public class DependentResourceNode { private final List dependsOn = new LinkedList<>(); private final List parents = new LinkedList<>();