8000 Dependent Resource Experiment 2 · rinaldodev/java-operator-sdk@cfe1ce7 · GitHub
[go: up one dir, main page]

Skip to content

Commit cfe1ce7

Browse files
committed
Dependent Resource Experiment 2
1 parent 48aab47 commit cfe1ce7

File tree

5 files changed

+71
-5
lines changed

5 files changed

+71
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package io.javaoperatorsdk.operator.processing.dependentresource;
2+
3+
import io.javaoperatorsdk.operator.api.DeleteControl;
4+
5+
public interface DeleteDescriptor {
6+
7+
DeleteControl getDeleteControl();
8+
9+
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package io.javaoperatorsdk.operator.processing.dependentresource;
22

33
import io.fabric8.kubernetes.client.CustomResource;
4+
import io.javaoperatorsdk.operator.api.DeleteControl;
45
import io.javaoperatorsdk.operator.processing.event.EventSource;
56

6-
public interface DependentResource<T, K extends StatusDescriptor> {
7+
public interface DependentResource<T,L, K extends StatusDescriptor> {
78

8-
K reconcile(T input);
9+
K createOrUpdate(T input);
10+
11+
DeleteControl delete(L input);
912

1013
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.javaoperatorsdk.operator.processing.dependentresource;
2+
3+
import io.javaoperatorsdk.operator.api.DeleteControl;
4+
5+
public class SimpleDeleteDescriptor implements DeleteDescriptor{
6+
7+
private final DeleteControl deleteControl;
8+
9+
public SimpleDeleteDescriptor(DeleteControl deleteControl) {
10+
this.deleteControl = deleteControl;
11+
}
12+
13+
@Override
14+
public DeleteControl getDeleteControl() {
15+
return deleteControl;
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.javaoperatorsdk.operator.processing.dependentresource.deployment;
2+
3+
public class DeleteInput {
4+
5+
private final String name;
6+
private final String namespace;
7+
8+
9+
public DeleteInput(String name, String namespace) {
10+
this.name = name;
11+
this.namespace = namespace;
12+
}
13+
14+
public String getName() {
15+
return name;
16+
}
17+
18+
public String getNamespace() {
19+
return namespace;
20+
}
21+
}

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/dependentresource/deployment/DeploymentDependentResource.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22

33
import io.fabric8.kubernetes.api.model.OwnerReference;
44
import io.fabric8.kubernetes.api.model.apps.Deployment;
5+
import io.fabric8.kubernetes.api.model.apps.DoneableDeployment;
56
import io.fabric8.kubernetes.client.KubernetesClient;
67
import io.fabric8.kubernetes.client.KubernetesClientException;
78
import io.fabric8.kubernetes.client.Watcher;
9+
import io.fabric8.kubernetes.client.dsl.RollableScalableResource;
810
import io.fabric8.kubernetes.client.utils.Serialization;
11+
import io.javaoperatorsdk.operator.api.DeleteControl;
912
import io.javaoperatorsdk.operator.processing.dependentresource.DependentResource;
13+
import io.javaoperatorsdk.operator.processing.dependentresource.SimpleDeleteDescriptor;
1014
import io.javaoperatorsdk.operator.processing.dependentresource.Status;
1115
import io.javaoperatorsdk.operator.processing.event.AbstractEventSource;
1216
import org.slf4j.Logger;
@@ -24,7 +28,7 @@
2428
import static java.net.HttpURLConnection.HTTP_GONE;
2529

2630
public class DeploymentDependentResource extends AbstractEventSource
27-
implements DependentResource<DeploymentInput, DeploymentStatus>, Watcher<Deployment> {
31+
implements DependentResource<DeploymentInput, DeleteInput, DeploymentStatus>, Watcher<Deployment> {
2832

2933
private final static Logger log = LoggerFactory.getLogger(DeploymentDependentResource.class);
3034

@@ -42,7 +46,7 @@ private void registerWatch() {
4246

4347

4448
@Override
45-
public DeploymentStatus reconcile(DeploymentInput input) {
49+
public DeploymentStatus createOrUpdate(DeploymentInput input) {
4650

4751
Optional<Deployment> cachedDeployment = getLatestDeployment(input.getCustomResourceUid());
4852
Deployment deployment;
@@ -56,6 +60,18 @@ public DeploymentStatus reconcile(DeploymentInput input) {
5660
Status.CREATED_SUCCESSFULLY : Status.IN_PROGRESS, deployment);
5761
}
5862

63+
@Override
64+
public DeleteControl delete(DeleteInput input) {
65+
log.info("Deleting Deployment {}", input.getName());
66+
RollableScalableResource<Deployment, DoneableDeployment> deployment = client.apps().deployments()
67+
.inNamespace(input.getNamespace())
68+
.withName(input.getName());
69+
if (deployment.get() != null) {
70+
deployment.delete();
71+
}
72+
return DeleteControl.DEFAULT_DELETE;
73+
}
74+
5975
private Deployment createOrUpdateDeployment(DeploymentInput input) {
6076
String ns = input.getNamespace();
6177
Deployment existingDeployment = client.apps().deployments()
@@ -73,7 +89,7 @@ private Deployment createOrUpdateDeployment(DeploymentInput input) {
7389

7490
//make sure label selector matches label (which has to be matched by service selector too)
7591
deployment.getSpec().getTemplate().getMetadata().getLabels().put("app", input.getName());
76-
deployment.getSpec().getSelector().getMatchLabels().put("app",input.getName());
92+
deployment.getSpec().getSelector().getMatchLabels().put("app", input.getName());
7793

7894
OwnerReference ownerReference = deployment.getMetadata().getOwnerReferences().get(0);
7995
ownerReference.setName(input.getName());

0 commit comments

Comments
 (0)
0