Skip to content

Commit f9b15cb

Browse files
committed
wip
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 2ea8c45 commit f9b15cb

File tree

5 files changed

+76
-28
lines changed

5 files changed

+76
-28
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package io.javaoperatorsdk.operator.sample;
22

33
import io.fabric8.kubernetes.client.CustomResource;
4+
import io.fabric8.kubernetes.model.annotation.Group;
5+
import io.fabric8.kubernetes.model.annotation.Version;
46

5-
public class ControllerNamespaceDeletionCustomResource extends CustomResource<ControllerNamespaceDeletionSpec, ControllerNamespaceDeletionStatus> {
7+
@Group("namespacedeletion.io")
8+
@Version("v1")
9+
public class ControllerNamespaceDeletionCustomResource
10+
extends CustomResource<ControllerNamespaceDeletionSpec, ControllerNamespaceDeletionStatus> {
611

712
}

Diff for: sample-operators/controller-namespace-deletion/src/main/java/io/javaoperatorsdk/operator/sample/ControllerNamespaceDeletionOperator.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import org.slf4j.LoggerFactory;
55

66
import io.javaoperatorsdk.operator.Operator;
7-
import io.javaoperatorsdk.operator.api.config.LeaderElectionConfiguration;
87

98
public class ControllerNamespaceDeletionOperator {
109

11-
private static final Logger log = LoggerFactory.getLogger(ControllerNamespaceDeletionOperator.class);
10+
private static final Logger log =
11+
LoggerFactory.getLogger(ControllerNamespaceDeletionOperator.class);
1212

1313
public static void main(String[] args) {
1414
Operator operator = new Operator();
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,58 @@
11
package io.javaoperatorsdk.operator.sample;
22

3+
import java.time.Duration;
4+
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
39
import io.javaoperatorsdk.operator.api.reconciler.Cleaner;
410
import io.javaoperatorsdk.operator.api.reconciler.Context;
511
import io.javaoperatorsdk.operator.api.reconciler.DeleteControl;
612
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
713
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
814

9-
import java.time.Duration;
10-
11-
public class ControllerNamespaceDeletionReconciler implements Reconciler<ControllerNamespaceDeletionCustomResource>,
12-
Cleaner<ControllerNamespaceDeletionCustomResource> {
13-
14-
@Override
15-
public UpdateControl<ControllerNamespaceDeletionCustomResource> reconcile(ControllerNamespaceDeletionCustomResource resource,
16-
Context<ControllerNamespaceDeletionCustomResource> context) {
17-
18-
19-
return null;
20-
}
21-
22-
23-
@Override
24-
public DeleteControl cleanup(ControllerNamespaceDeletionCustomResource resource,
25-
Context<ControllerNamespaceDeletionCustomResource> context) {
26-
try {
27-
Thread.sleep(Duration.ofSeconds(10).toMillis());
28-
return DeleteControl.defaultDelete();
29-
} catch (InterruptedException e) {
30-
throw new RuntimeException(e);
31-
}
15+
public class ControllerNamespaceDeletionReconciler
16+
implements Reconciler<ControllerNamespaceDeletionCustomResource>,
17+
Cleaner<ControllerNamespaceDeletionCustomResource> {
18+
19+
private static final Logger log =
20+
LoggerFactory.getLogger(ControllerNamespaceDeletionReconciler.class);
21+
22+
public static final Duration CLEANUP_DELAY = Duration.ofSeconds(10);
23+
24+
@Override
25+
public UpdateControl<ControllerNamespaceDeletionCustomResource> reconcile(
26+
ControllerNamespaceDeletionCustomResource resource,
27+
Context<ControllerNamespaceDeletionCustomResource> context) {
28+
log.info("Reconciling: {} in namespace: {}", resource.getMetadata().getName(),
29+
resource.getMetadata().getNamespace());
30+
31+
var response = createResponseResource(resource);
32+
response.getStatus().setValue(resource.getSpec().getValue());
33+
34+
return UpdateControl.patchStatus(response);
35+
}
36+
37+
private ControllerNamespaceDeletionCustomResource createResponseResource(
38+
ControllerNamespaceDeletionCustomResource resource) {
39+
var res = new ControllerNamespaceDeletionCustomResource();
40+
res.setMetadata(new ObjectMetaBuilder()
41+
.withName(resource.getMetadata().getName())
42+
.withNamespace(resource.getMetadata().getNamespace())
43+
.build());
44+
res.setStatus(new ControllerNamespaceDeletionStatus());
45+
return res;
46+
}
47+
48+
@Override
49+
public DeleteControl cleanup(ControllerNamespaceDeletionCustomResource resource,
50+
Context<ControllerNamespaceDeletionCustomResource> context) {
51+
try {
52+
Thread.sleep(CLEANUP_DELAY.toMillis());
53+
return DeleteControl.defaultDelete();
54+
} catch (InterruptedException e) {
55+
throw new RuntimeException(e);
3256
}
57+
}
3358
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
package io.javaoperatorsdk.operator.sample;
22

3-
import io.fabric8.kubernetes.client.CustomResource;
43

54
public class ControllerNamespaceDeletionSpec {
5+
6+
private String value;
7+
8+
public String getValue() {
9+
return value;
10+
}
11+
12+
public void setValue(String value) {
13+
this.value = value;
14+
}
615
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
package io.javaoperatorsdk.operator.sample;
22

3-
import io.fabric8.kubernetes.client.CustomResource;
43

54
public class ControllerNamespaceDeletionStatus {
5+
6+
private String value;
7+
8+
public String getValue() {
9+
return value;
10+
}
11+
12+
public void setValue(String value) {
13+
this.value = value;
14+
}
615
}

0 commit comments

Comments
 (0)