From 59e25bc732418690874edbc6a6cfc014329c095e Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Wed, 5 Jul 2023 21:45:22 +0200 Subject: [PATCH] OZG-3961 - improve error handling --- .../keycloak/client/KeycloakClientReconciler.java | 13 +++++++------ .../keycloak/group/KeycloakGroupReconciler.java | 13 +++++++------ .../keycloak/user/KeycloakUserReconciler.java | 13 +++++++------ .../keycloak/user/KeycloakUserRemoteService.java | 2 +- .../keycloak/KeycloakGenericRemoteServiceTest.java | 3 --- 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java index 1fd55ffb..3f45f394 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java @@ -35,9 +35,9 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>, log.info("Reconcile KeycloakClient " + crdName); - Optional<String> preconditionErrors = preconditionService.getReconcilePreconditionErrors(resource); - if (preconditionErrors.isPresent()) { - return buildStatusInProgress(resource, preconditionErrors); + Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource); + if (preconditionError.isPresent()) { + return buildStatusInProgress(resource, preconditionError.get()); } service.createOrUpdateClient(resource.getSpec(), resource.getMetadata().getNamespace()); @@ -50,10 +50,11 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>, return UpdateControl.updateStatus(resource); } - private UpdateControl<OzgKeycloakClient> buildStatusInProgress(OzgKeycloakClient resource, Optional<String> preconditionErrors) { + private UpdateControl<OzgKeycloakClient> buildStatusInProgress(OzgKeycloakClient resource, String errorMessage) { log.log(Level.INFO, - "Could not yet reconcile user " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace()); - resource.setStatus(OzgKeycloakClientStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(preconditionErrors.get()).build()); + "Could not yet reconcile client " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace() + ":" + + errorMessage); + resource.setStatus(OzgKeycloakClientStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(errorMessage).build()); return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS)); } diff --git a/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java index 8b4acd13..d9f34e41 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java @@ -35,9 +35,9 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er log.info("Reconcile KeycloakGroup " + crdName); - Optional<String> preconditionErrors = preconditionService.getReconcilePreconditionErrors(resource); - if (preconditionErrors.isPresent()) { - return buildStatusInProgress(resource, preconditionErrors); + Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource); + if (preconditionError.isPresent()) { + return buildStatusInProgress(resource, preconditionError.get()); } service.createGroup(resource.getSpec(), resource.getMetadata().getNamespace()); @@ -50,10 +50,11 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er return UpdateControl.updateStatus(resource); } - UpdateControl<OzgKeycloakGroup> buildStatusInProgress(OzgKeycloakGroup resource, Optional<String> preconditionErrors) { + UpdateControl<OzgKeycloakGroup> buildStatusInProgress(OzgKeycloakGroup resource, String errorMessage) { log.log(Level.INFO, - "Could not yet reconcile group " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace()); - resource.setStatus(OzgKeycloakGroupStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(preconditionErrors.get()).build()); + "Could not yet reconcile group " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace() + ": " + + errorMessage); + resource.setStatus(OzgKeycloakGroupStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(errorMessage).build()); return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS)); } 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 4fe892dd..0c9b5cc9 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java @@ -36,9 +36,9 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea log.info("Reconciling KeycloakUser " + resource.getMetadata().getName()); String namespace = resource.getMetadata().getNamespace(); - Optional<String> preconditionErrors = preconditionService.getReconcilePreconditionErrors(resource); - if (preconditionErrors.isPresent()) { - return buildStatusInProgress(resource, preconditionErrors); + Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource); + if (preconditionError.isPresent()) { + return buildStatusInProgress(resource, preconditionError.get()); } keycloakUserService.createOrUpdateUser(resource.getSpec(), namespace); @@ -62,10 +62,11 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea return UpdateControl.updateStatus(resource); } - private UpdateControl<OzgKeycloakUser> buildStatusInProgress(OzgKeycloakUser resource, Optional<String> preconditionErrors) { + private UpdateControl<OzgKeycloakUser> buildStatusInProgress(OzgKeycloakUser resource, String errorMessage) { log.log(Level.INFO, - "Could not yet reconcile user " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace()); - resource.setStatus(OzgKeycloakUserStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(preconditionErrors.get()).build()); + "Could not yet reconcile user " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace() + ": " + + errorMessage); + resource.setStatus(OzgKeycloakUserStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(errorMessage).build()); return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS)); } diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java index 86d18e63..417d77ec 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java @@ -47,7 +47,7 @@ class KeycloakUserRemoteService { user.getClientRoles().get(clientId).stream() .map(clientRoleName -> keycloakGenericRemoteService.getClientRole(clientRoleName, appClient.getId(), realm) .orElseThrow(() -> new KeycloakException( - "Role " + clientRoleName + " not found for client with clientId " + clientId))) + "Role " + clientRoleName + " not found for client with clientId " + clientId + " in realm " + realm))) .forEach(clientRole -> addClientRoleToUser(clientRole, realmResource, userId, appClient)); }); diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakGenericRemoteServiceTest.java b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakGenericRemoteServiceTest.java index 6251f271..96afcc95 100644 --- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakGenericRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakGenericRemoteServiceTest.java @@ -145,9 +145,6 @@ class KeycloakGenericRemoteServiceTest { when(keycloak.realm(REALM)).thenReturn(realmResource); when(realmResource.clients()).thenReturn(clientsResource); when(clientsResource.get(REAL_CLIENT_ID)).thenReturn(clientResource); - -// doReturn(Optional.of(clientRepresentation)).when(service).getByClientId(CLIENT_ID, REALM); -// when(clientRepresentation.getId()).thenReturn(CLIENT_ID); } @Test -- GitLab