From 8f94e9818c33f8d558989eee36bdb2fa97265d0e Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Sat, 26 Aug 2023 13:27:02 +0200
Subject: [PATCH] OZG-3961 revert reconciler for test

---
 .../keycloak/user/KeycloakUserReconciler.java | 62 ++++++++++++-------
 .../user/UserUpdateControlBuilder.java        |  3 +
 2 files changed, 41 insertions(+), 24 deletions(-)

diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
index 2647a00..d7cb4ac 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
@@ -50,42 +50,56 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea
 
 	@Override
 	public UpdateControl<OzgKeycloakUser> reconcile(OzgKeycloakUser resource, Context<OzgKeycloakUser> context) {
-		var userName = resource.getMetadata().getName();
-		var namespace = resource.getMetadata().getNamespace();
-
-		log.info(String.format("Reconciling user %s...", userName));
-
 		try {
+			log.info(String.format("Reconciling user %s...", resource.getMetadata().getName()));
+
 			var preconditionError = preconditionService.getPreconditionErrors(resource);
 			if (preconditionError.isPresent()) {
-				var errorMessage = preconditionError.get();
-
-				log.warning(String.format("Could not reconcile user %s in namespace %s: %s", userName, namespace, errorMessage));
-
-				return UserUpdateControlBuilder.fromResource(resource)
-						.withStatus(OzgCustomResourceStatus.IN_PROGRESS)
-						.withMessage(errorMessage)
-						.withReschedule(Config.RECONCILER_RETRY_SECONDS)
-						.build();
+				return buildStatusInProgress(resource, preconditionError.get());
 			}
 
-			keycloakUserService.createOrUpdateUser(resource.getSpec(), namespace);
+			keycloakUserService.createOrUpdateUser(resource.getSpec(), resource.getMetadata().getNamespace());
 
-			return UserUpdateControlBuilder.fromResource(resource).withStatus(OzgCustomResourceStatus.OK).build();
+			resource.setStatus(buildOzgKeycloakUserOkStatus());
+			return UpdateControl.updateStatus(resource);
 
 		} catch (Exception e) {
-			var errorMessage = e.getMessage();
-
-			log.log(Level.SEVERE, String.format("Could not reconcile user %s for namespace %s: %s", userName, namespace, errorMessage), e);
+			log.log(Level.SEVERE, String.format("Could not reconcile user %s for namespace %s: %s", resource.getMetadata().getName(),
+					resource.getMetadata().getNamespace(), e.getMessage()), e);
 
-			return UserUpdateControlBuilder.fromResource(resource)
-					.withStatus(OzgCustomResourceStatus.ERROR)
-					.withMessage(errorMessage)
-					.withReschedule(Config.RECONCILER_RETRY_SECONDS_ON_ERROR)
-					.build();
+			resource.setStatus(buildOzgKeycloakUserErrorStatus(e.getMessage()));
+			return createRescheduleUpdateControl(resource);
 		}
 	}
 
+	private OzgKeycloakUserStatus buildOzgKeycloakUserOkStatus() {
+		return buildOzgKeycloakUserStatus(OzgCustomResourceStatus.OK, null);
+	}
+
+	private OzgKeycloakUserStatus buildOzgKeycloakUserErrorStatus(String message) {
+		return buildOzgKeycloakUserStatus(OzgCustomResourceStatus.ERROR, message);
+	}
+
+	private UpdateControl<OzgKeycloakUser> buildStatusInProgress(OzgKeycloakUser resource, String errorMessage) {
+		log.log(Level.WARNING, String.format("Could not reconcile user %s in namespace %s: %s", resource.getMetadata().getName(),
+				resource.getMetadata().getNamespace(), errorMessage));
+
+		resource.setStatus(buildOzgKeycloakUserInProgressStatus(errorMessage));
+		return createRescheduleUpdateControl(resource);
+	}
+
+	private OzgKeycloakUserStatus buildOzgKeycloakUserInProgressStatus(String message) {
+		return buildOzgKeycloakUserStatus(OzgCustomResourceStatus.IN_PROGRESS, message);
+	}
+
+	private OzgKeycloakUserStatus buildOzgKeycloakUserStatus(OzgCustomResourceStatus status, String message) {
+		return OzgKeycloakUserStatus.builder().status(status).message(message).build();
+	}
+
+	private UpdateControl<OzgKeycloakUser> createRescheduleUpdateControl(OzgKeycloakUser userResource) {
+		return UpdateControl.updateStatus(userResource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS);
+	}
+
 	@Override
 	public DeleteControl cleanup(OzgKeycloakUser resource, Context<OzgKeycloakUser> context) {
 		var userName = resource.getMetadata().getName();
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java b/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java
index e8d877a..abe685e 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java
@@ -9,8 +9,10 @@ import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
 class UserUpdateControlBuilder {
 
 	private OzgKeycloakUser resource;
+
 	private OzgCustomResourceStatus status;
 	private Optional<String> message = Optional.empty();
+
 	private boolean reschedule = false;
 	private Duration scheduleDuration;
 
@@ -40,6 +42,7 @@ class UserUpdateControlBuilder {
 
 	public UpdateControl<OzgKeycloakUser> build() {
 		resource.setStatus(buildOzgKeycloakUserStatus());
+
 		return buildUpdateControl();
 	}
 
-- 
GitLab