diff --git a/pom.xml b/pom.xml index b1a1483b7bce09366b09c8ec84a4d0aa6aa22820..5492f8f505b2c44438e836e99a6549ccce1931b7 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,11 @@ <artifactId>operator-framework-spring-boot-starter</artifactId> <version>${operator-sdk.version}</version> </dependency> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </dependency> + <dependency> <groupId>org.springframework.boot</groupId> diff --git a/samples/crd/KeycloakUser b/samples/crd/KeycloakUser new file mode 100644 index 0000000000000000000000000000000000000000..77f7702947b3e7a90b0a0a002252ef0e72f8636d --- /dev/null +++ b/samples/crd/KeycloakUser @@ -0,0 +1,6 @@ +apiVersion: "operator.ozgcloud.de/v1" +kind: KeycloakUser +metadata: + name: keycloakuser-test +spec: + name: helge diff --git a/src/main/java/de/ozgcloud/operator/Config.java b/src/main/java/de/ozgcloud/operator/Config.java index 2995687a336a1a24b759516144eb4150bb4c0e76..a49ec666b73791dc9344792a7773256c025e669c 100644 --- a/src/main/java/de/ozgcloud/operator/Config.java +++ b/src/main/java/de/ozgcloud/operator/Config.java @@ -11,6 +11,11 @@ import io.javaoperatorsdk.operator.api.reconciler.Reconciler; @Configuration public class Config { +// @Bean +// WebPageReconciler customServiceController() { +// return new WebPageReconciler(); +// } + @Bean(initMethod = "start", destroyMethod = "stop") @SuppressWarnings("rawtypes") Operator operator(List<Reconciler> controllers) { diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java new file mode 100644 index 0000000000000000000000000000000000000000..bb3a997def5453b5037ef91b2b403c7b391deebd --- /dev/null +++ b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java @@ -0,0 +1,12 @@ +package de.ozgcloud.operator.keycloak; + +import io.fabric8.kubernetes.api.model.Namespaced; +import io.fabric8.kubernetes.client.CustomResource; +import io.fabric8.kubernetes.model.annotation.Group; +import io.fabric8.kubernetes.model.annotation.Version; + +@Group("operator.ozgcloud.de") +@Version("v1") +public class KeycloakUser extends CustomResource<KeycloakUserSpec, KeycloakUserStatus> implements Namespaced { + +} diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java new file mode 100644 index 0000000000000000000000000000000000000000..8d9396867d48a0d8f4a4de98e912125487ac3d45 --- /dev/null +++ b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java @@ -0,0 +1,21 @@ +package de.ozgcloud.operator.keycloak; + +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; +import lombok.extern.log4j.Log4j2; + +@ControllerConfiguration +@Log4j2 +public class KeycloakUserReconciler implements Reconciler<KeycloakUser> { + + @Override + public UpdateControl<KeycloakUser> reconcile(KeycloakUser crd, Context<KeycloakUser> context) throws Exception { +// String name = crd.getMetadata().getName(); + String name = crd.getSpec().getName(); + log.info("Reconciling: {}", name); + crd.setStatus(KeycloakUserStatus.builder().status("Updated status for " + name).build()); + return UpdateControl.updateStatus(crd); + } +} diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java new file mode 100644 index 0000000000000000000000000000000000000000..1f813f97c57aef7facd28f6f55c93f3f4b0e908f --- /dev/null +++ b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java @@ -0,0 +1,11 @@ +package de.ozgcloud.operator.keycloak; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class KeycloakUserSpec { + + private String name; +} diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java new file mode 100644 index 0000000000000000000000000000000000000000..2120111aff0b3cecd92b60fb70417ce54a9cf1af --- /dev/null +++ b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java @@ -0,0 +1,14 @@ +package de.ozgcloud.operator.keycloak; + +import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder +public class KeycloakUserStatus extends ObservedGenerationAwareStatus { + + private String status; +}