Skip to content

Commit 55d987e

Browse files
committed
feat: GenericKubernetesResource based DependentResource
Signed-off-by: Attila Mészáros <csviri@gmail.com>
1 parent 4f968d9 commit 55d987e

File tree

5 files changed

+135
-0
lines changed

5 files changed

+135
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.javaoperatorsdk.operator.processing.dependent.kubernetes;
2+
3+
import io.fabric8.kubernetes.api.model.GenericKubernetesResource;
4+
import io.fabric8.kubernetes.api.model.HasMetadata;
5+
6+
public class GenericKubernetesDependentResource<P extends HasMetadata>
7+
extends KubernetesDependentResource<GenericKubernetesResource, P> {
8+
9+
private final String apiVersion;
10+
private final String kind;
11+
12+
13+
public GenericKubernetesDependentResource(String apiVersion, String kind) {
14+
super(GenericKubernetesResource.class);
15+
this.apiVersion = apiVersion;
16+
this.kind = kind;
17+
}
18+
19+
20+
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package io.javaoperatorsdk.operator;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import io.fabric8.kubernetes.api.model.GenericKubernetesResource;
6+
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
7+
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
8+
9+
public class GenericKubernetesDependentStandaloneIT {
10+
11+
12+
@Test
13+
void testInformer() {
14+
GenericKubernetesResource res = new GenericKubernetesResource();
15+
res.setApiVersion("v1");
16+
res.setKind("ConfigMap");
17+
18+
try (var client = new KubernetesClientBuilder().build()) {
19+
client.resource(res).inform().addEventHandler(new ResourceEventHandler<>() {
20+
@Override
21+
public void onAdd(GenericKubernetesResource genericKubernetesResource) {
22+
System.out.println(genericKubernetesResource);
23+
}
24+
25+
@Override
26+
public void onUpdate(GenericKubernetesResource genericKubernetesResource,
27+
GenericKubernetesResource t1) {
28+
System.out.println(genericKubernetesResource);
29+
}
30+
31+
@Override
32+
public void onDelete(GenericKubernetesResource genericKubernetesResource, boolean b) {
33+
System.out.println(genericKubernetesResource);
34+
}
35+
});
36+
}
37+
}
38+
39+
40+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.javaoperatorsdk.operator.sample.generickubernetesdependentstandalone;
2+
3+
import io.fabric8.kubernetes.api.model.GenericKubernetesResource;
4+
import io.javaoperatorsdk.operator.api.reconciler.Context;
5+
import io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter;
6+
import io.javaoperatorsdk.operator.processing.dependent.Creator;
7+
import io.javaoperatorsdk.operator.processing.dependent.Updater;
8+
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.GenericKubernetesDependentResource;
9+
10+
public class ConfigMapGenericKubernetesDependent extends
11+
GenericKubernetesDependentResource<GenericKubernetesDependentStandaloneCustomResource>
12+
implements
13+
Creator<GenericKubernetesResource, GenericKubernetesDependentStandaloneCustomResource>,
14+
Updater<GenericKubernetesResource, GenericKubernetesDependentStandaloneCustomResource>,
15+
Deleter<GenericKubernetesDependentStandaloneCustomResource> {
16+
17+
18+
public ConfigMapGenericKubernetesDependent() {
19+
super("v1", "ConfigMap");
20+
}
21+
22+
@Override
23+
protected GenericKubernetesResource desired(
24+
GenericKubernetesDependentStandaloneCustomResource primary,
25+
Context<GenericKubernetesDependentStandaloneCustomResource> context) {
26+
27+
return null;
28+
}
29+
30+
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.javaoperatorsdk.operator.sample.generickubernetesdependentstandalone;
2+
3+
import io.fabric8.kubernetes.api.model.Namespaced;
4+
import io.fabric8.kubernetes.client.CustomResource;
5+
import io.fabric8.kubernetes.model.annotation.Group;
6+
import io.fabric8.kubernetes.model.annotation.ShortNames;
7+
import io.fabric8.kubernetes.model.annotation.Version;
8+
9+
@Group("sample.javaoperatorsdk")
10+
@Version("v1")
11+
@ShortNames("gkd")
12+
public class GenericKubernetesDependentStandaloneCustomResource
13+
extends CustomResource<Void, Void>
14+
implements Namespaced {
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package io.javaoperatorsdk.operator.sample.generickubernetesdependentstandalone;
2+
3+
import io.javaoperatorsdk.operator.api.reconciler.*;
4+
import io.javaoperatorsdk.operator.sample.bulkdependent.CRUDConfigMapBulkDependentResource;
5+
import io.javaoperatorsdk.operator.sample.bulkdependent.ConfigMapDeleterBulkDependentResource;
6+
7+
@ControllerConfiguration
8+
public class GenericKubernetesDependentStandaloneReconciler
9+
implements Reconciler<GenericKubernetesDependentStandaloneCustomResource> {
10+
11+
12+
private final ConfigMapDeleterBulkDependentResource dependent;
13+
14+
public GenericKubernetesDependentStandaloneReconciler() {
15+
dependent = new CRUDConfigMapBulkDependentResource();
16+
}
17+
18+
@Override
19+
public UpdateControl<GenericKubernetesDependentStandaloneCustomResource> reconcile(
20+
GenericKubernetesDependentStandaloneCustomResource resource,
21+
Context<GenericKubernetesDependentStandaloneCustomResource> context) {
22+
23+
24+
25+
return UpdateControl.noUpdate();
26+
}
27+
28+
}

0 commit comments

Comments
 (0)