From a85c2aebfaada4e389f073fb1ed8f2dfc41dd5ca Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Wed, 7 Jun 2023 21:49:01 +0200
Subject: [PATCH] add keycloakUser (test only)

---
 pom.xml                                       |  5 +++++
 samples/crd/KeycloakUser                      |  6 ++++++
 .../java/de/ozgcloud/operator/Config.java     |  5 +++++
 .../operator/keycloak/KeycloakUser.java       | 12 +++++++++++
 .../keycloak/KeycloakUserReconciler.java      | 21 +++++++++++++++++++
 .../operator/keycloak/KeycloakUserSpec.java   | 11 ++++++++++
 .../operator/keycloak/KeycloakUserStatus.java | 14 +++++++++++++
 7 files changed, 74 insertions(+)
 create mode 100644 samples/crd/KeycloakUser
 create mode 100644 src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java
 create mode 100644 src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java
 create mode 100644 src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java
 create mode 100644 src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java

diff --git a/pom.xml b/pom.xml
index b1a1483..5492f8f 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 0000000..77f7702
--- /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 2995687..a49ec66 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 0000000..bb3a997
--- /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 0000000..8d93968
--- /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 0000000..1f813f9
--- /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 0000000..2120111
--- /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;
+}
-- 
GitLab