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 d7cb4ac3697d616d0300a6127b0f3cd8590c5600..2647a00599257804340e2b6db04cfc4a23121071 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java @@ -50,54 +50,40 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea @Override public UpdateControl<OzgKeycloakUser> reconcile(OzgKeycloakUser resource, Context<OzgKeycloakUser> context) { - try { - log.info(String.format("Reconciling user %s...", resource.getMetadata().getName())); + var userName = resource.getMetadata().getName(); + var namespace = resource.getMetadata().getNamespace(); + log.info(String.format("Reconciling user %s...", userName)); + + try { var preconditionError = preconditionService.getPreconditionErrors(resource); if (preconditionError.isPresent()) { - return buildStatusInProgress(resource, preconditionError.get()); - } + var errorMessage = preconditionError.get(); - keycloakUserService.createOrUpdateUser(resource.getSpec(), resource.getMetadata().getNamespace()); + log.warning(String.format("Could not reconcile user %s in namespace %s: %s", userName, namespace, errorMessage)); - resource.setStatus(buildOzgKeycloakUserOkStatus()); - return UpdateControl.updateStatus(resource); - - } catch (Exception 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); - - 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); - } + return UserUpdateControlBuilder.fromResource(resource) + .withStatus(OzgCustomResourceStatus.IN_PROGRESS) + .withMessage(errorMessage) + .withReschedule(Config.RECONCILER_RETRY_SECONDS) + .build(); + } - 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)); + keycloakUserService.createOrUpdateUser(resource.getSpec(), namespace); - resource.setStatus(buildOzgKeycloakUserInProgressStatus(errorMessage)); - return createRescheduleUpdateControl(resource); - } + return UserUpdateControlBuilder.fromResource(resource).withStatus(OzgCustomResourceStatus.OK).build(); - private OzgKeycloakUserStatus buildOzgKeycloakUserInProgressStatus(String message) { - return buildOzgKeycloakUserStatus(OzgCustomResourceStatus.IN_PROGRESS, message); - } + } catch (Exception e) { + var errorMessage = e.getMessage(); - private OzgKeycloakUserStatus buildOzgKeycloakUserStatus(OzgCustomResourceStatus status, String message) { - return OzgKeycloakUserStatus.builder().status(status).message(message).build(); - } + log.log(Level.SEVERE, String.format("Could not reconcile user %s for namespace %s: %s", userName, namespace, errorMessage), e); - private UpdateControl<OzgKeycloakUser> createRescheduleUpdateControl(OzgKeycloakUser userResource) { - return UpdateControl.updateStatus(userResource).rescheduleAfter(Config.RECONCILER_RETRY_SECONDS); + return UserUpdateControlBuilder.fromResource(resource) + .withStatus(OzgCustomResourceStatus.ERROR) + .withMessage(errorMessage) + .withReschedule(Config.RECONCILER_RETRY_SECONDS_ON_ERROR) + .build(); + } } @Override diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretService.java b/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretService.java index 3997b4a80c99da0ec5b39ba469d1e2147cc05d31..4dde6588ef379c2560ca3cc54dc6f12a7e6cb351 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretService.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretService.java @@ -13,7 +13,7 @@ import io.fabric8.kubernetes.client.extension.ResourceAdapter; class UserSecretService { @Autowired - private UserNameConverter userNameMapper; + private UserNameConverter userNameConverter; @Autowired private UserSecretBuilder secretBuilder; @Autowired @@ -24,7 +24,7 @@ class UserSecretService { } public void create(OzgKeycloakUserSpec userSpec, String namespace) { - var secretName = userNameMapper.toSecretName(userSpec.getKeycloakUser()); + var secretName = userNameConverter.toSecretName(userSpec.getKeycloakUser()); var credentialsSecret = secretBuilder.build(secretName, userSpec.getKeycloakUser(), namespace); @@ -37,7 +37,7 @@ class UserSecretService { } Resource<Secret> getUserSecret(OzgKeycloakUserSpec userSpec, String namespace) { - var secretName = userNameMapper.toSecretName(userSpec.getKeycloakUser()); + var secretName = userNameConverter.toSecretName(userSpec.getKeycloakUser()); return kubernetesRemoteService.getSecret(namespace, secretName); } 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 50af3159b3edf1dbccb0de8a036f7e7adfe963e0..3b7ff063627c961b0065688716533094935d45f9 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/UserUpdateControlBuilder.java @@ -42,7 +42,7 @@ class UserUpdateControlBuilder { public UpdateControl<OzgKeycloakUser> build() { resource.setStatus(buildOzgKeycloakUserStatus()); - + return buildUpdateControl(); } @@ -55,7 +55,7 @@ class UserUpdateControlBuilder { private UpdateControl<OzgKeycloakUser> buildUpdateControl() { if (reschedule) { - UpdateControl.updateStatus(resource).rescheduleAfter(scheduleDuration); + return UpdateControl.updateStatus(resource).rescheduleAfter(scheduleDuration); } return UpdateControl.updateStatus(resource); }