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