Skip to content

Commit

Permalink
feat: Deleter Dependent and Cleanup Post Condition
Browse files Browse the repository at this point in the history
Signed-off-by: csviri <csviri@gmail.com>
  • Loading branch information
csviri committed Jan 30, 2024
1 parent 101c3d5 commit 2c231ad
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.csviri.operator.resourceflow.dependent;

import io.csviri.operator.resourceflow.customresource.resourceflow.ResourceFlow;
import io.fabric8.kubernetes.api.model.GenericKubernetesResource;
import io.javaoperatorsdk.operator.api.reconciler.dependent.GarbageCollected;

public class GCGenericDependentResource extends GenericDependentResource
implements GarbageCollected<ResourceFlow> {

public GCGenericDependentResource(GenericKubernetesResource desired, String name) {
super(desired, name);
}

public GCGenericDependentResource(String desiredTemplate, String name) {
super(desiredTemplate, name);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import io.fabric8.kubernetes.api.model.GenericKubernetesResource;
import io.fabric8.kubernetes.client.utils.Serialization;
import io.javaoperatorsdk.operator.api.reconciler.Context;
import io.javaoperatorsdk.operator.api.reconciler.dependent.GarbageCollected;
import io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter;
import io.javaoperatorsdk.operator.processing.GroupVersionKind;
import io.javaoperatorsdk.operator.processing.dependent.Creator;
import io.javaoperatorsdk.operator.processing.dependent.Updater;
Expand All @@ -23,7 +23,7 @@

public class GenericDependentResource
extends GenericKubernetesDependentResource<ResourceFlow>
implements GarbageCollected<ResourceFlow>,
implements Deleter<ResourceFlow>,
Updater<GenericKubernetesResource, ResourceFlow>,
Creator<GenericKubernetesResource, ResourceFlow> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@
import io.csviri.operator.resourceflow.customresource.resourceflow.condition.ConditionSpec;
import io.csviri.operator.resourceflow.customresource.resourceflow.condition.JavaScriptConditionSpec;
import io.csviri.operator.resourceflow.customresource.resourceflow.condition.PodsReadyConditionSpec;
import io.csviri.operator.resourceflow.dependent.GCGenericDependentResource;
import io.csviri.operator.resourceflow.dependent.GenericDependentResource;
import io.csviri.operator.resourceflow.dependent.GenericResourceDiscriminator;
import io.fabric8.kubernetes.api.model.GenericKubernetesResource;
import io.fabric8.kubernetes.client.KubernetesClientException;
import io.javaoperatorsdk.operator.api.reconciler.*;
import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition;
import io.javaoperatorsdk.operator.processing.dependent.workflow.KubernetesResourceDeletedCondition;
import io.javaoperatorsdk.operator.processing.dependent.workflow.WorkflowBuilder;

@ControllerConfiguration
Expand All @@ -27,6 +29,8 @@ public class ResourceFlowReconciler implements Reconciler<ResourceFlow>, Cleaner
private static final Logger log = LoggerFactory.getLogger(ResourceFlowReconciler.class);
public static final String DEPENDENT_NAME_ANNOTATION_KEY = "io.csviri.operator.resourceflow/name";

private final KubernetesResourceDeletedCondition deletePostCondition =
new KubernetesResourceDeletedCondition();
private final InformerRegister informerRegister = new InformerRegister();

@Override
Expand Down Expand Up @@ -104,14 +108,13 @@ private io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow<Resou
return builder.build();
}

// todo leaf dependents vs non leaf
private void createAndAddDependentToWorkflow(ResourceFlow primary, Context<ResourceFlow> context,
DependentResourceSpec spec,
Map<String, GenericDependentResource> genericDependentResourceMap,
WorkflowBuilder<ResourceFlow> builder, boolean leafDependent) {


var dr = createDependentResource(spec);
var dr = createDependentResource(spec, leafDependent);
var gvk = dr.getGroupVersionKind();

dr.setResourceDiscriminator(new GenericResourceDiscriminator(dr.getGroupVersionKind(),
Expand All @@ -123,6 +126,7 @@ private void createAndAddDependentToWorkflow(ResourceFlow primary, Context<Resou

builder.addDependentResource(dr);
spec.getDependsOn().forEach(s -> builder.dependsOn(genericDependentResourceMap.get(s)));
builder.withDeletePostcondition(deletePostCondition);
genericDependentResourceMap.put(spec.getName(), dr);

Optional.ofNullable(spec.getReadyPostCondition())
Expand All @@ -133,10 +137,17 @@ private void createAndAddDependentToWorkflow(ResourceFlow primary, Context<Resou
.ifPresent(c -> builder.withDeletePostcondition(toCondition(c)));
}

private static GenericDependentResource createDependentResource(DependentResourceSpec spec) {
return spec.getResourceTemplate() != null
? new GenericDependentResource(spec.getResourceTemplate(), spec.getName())
: new GenericDependentResource(spec.getResource(), spec.getName());
private static GenericDependentResource createDependentResource(DependentResourceSpec spec,
boolean leafDependent) {
if (leafDependent) {
return spec.getResourceTemplate() != null
? new GCGenericDependentResource(spec.getResourceTemplate(), spec.getName())
: new GCGenericDependentResource(spec.getResource(), spec.getName());
} else {
return spec.getResourceTemplate() != null
? new GenericDependentResource(spec.getResourceTemplate(), spec.getName())
: new GenericDependentResource(spec.getResource(), spec.getName());
}
}

@SuppressWarnings({"rawtypes"})
Expand Down

0 comments on commit 2c231ad

Please sign in to comment.