Skip to content
Snippets Groups Projects
Commit 59e25bc7 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-3961 - improve error handling

parent f689723f
Branches
Tags
No related merge requests found
...@@ -35,9 +35,9 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>, ...@@ -35,9 +35,9 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>,
log.info("Reconcile KeycloakClient " + crdName); log.info("Reconcile KeycloakClient " + crdName);
Optional<String> preconditionErrors = preconditionService.getReconcilePreconditionErrors(resource); Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource);
if (preconditionErrors.isPresent()) { if (preconditionError.isPresent()) {
return buildStatusInProgress(resource, preconditionErrors); return buildStatusInProgress(resource, preconditionError.get());
} }
service.createOrUpdateClient(resource.getSpec(), resource.getMetadata().getNamespace()); service.createOrUpdateClient(resource.getSpec(), resource.getMetadata().getNamespace());
...@@ -50,10 +50,11 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>, ...@@ -50,10 +50,11 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>,
return UpdateControl.updateStatus(resource); 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, log.log(Level.INFO,
"Could not yet reconcile user " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace()); "Could not yet reconcile client " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace() + ":"
resource.setStatus(OzgKeycloakClientStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(preconditionErrors.get()).build()); + errorMessage);
resource.setStatus(OzgKeycloakClientStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(errorMessage).build());
return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS)); return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS));
} }
......
...@@ -35,9 +35,9 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er ...@@ -35,9 +35,9 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er
log.info("Reconcile KeycloakGroup " + crdName); log.info("Reconcile KeycloakGroup " + crdName);
Optional<String> preconditionErrors = preconditionService.getReconcilePreconditionErrors(resource); Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource);
if (preconditionErrors.isPresent()) { if (preconditionError.isPresent()) {
return buildStatusInProgress(resource, preconditionErrors); return buildStatusInProgress(resource, preconditionError.get());
} }
service.createGroup(resource.getSpec(), resource.getMetadata().getNamespace()); service.createGroup(resource.getSpec(), resource.getMetadata().getNamespace());
...@@ -50,10 +50,11 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er ...@@ -50,10 +50,11 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er
return UpdateControl.updateStatus(resource); return UpdateControl.updateStatus(resource);
} }
UpdateControl<OzgKeycloakGroup> buildStatusInProgress(OzgKeycloakGroup resource, Optional<String> preconditionErrors) { UpdateControl<OzgKeycloakGroup> buildStatusInProgress(OzgKeycloakGroup resource, String errorMessage) {
log.log(Level.INFO, log.log(Level.INFO,
"Could not yet reconcile group " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace()); "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()); + errorMessage);
resource.setStatus(OzgKeycloakGroupStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(errorMessage).build());
return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS)); return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS));
} }
......
...@@ -36,9 +36,9 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea ...@@ -36,9 +36,9 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea
log.info("Reconciling KeycloakUser " + resource.getMetadata().getName()); log.info("Reconciling KeycloakUser " + resource.getMetadata().getName());
String namespace = resource.getMetadata().getNamespace(); String namespace = resource.getMetadata().getNamespace();
Optional<String> preconditionErrors = preconditionService.getReconcilePreconditionErrors(resource); Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource);
if (preconditionErrors.isPresent()) { if (preconditionError.isPresent()) {
return buildStatusInProgress(resource, preconditionErrors); return buildStatusInProgress(resource, preconditionError.get());
} }
keycloakUserService.createOrUpdateUser(resource.getSpec(), namespace); keycloakUserService.createOrUpdateUser(resource.getSpec(), namespace);
...@@ -62,10 +62,11 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea ...@@ -62,10 +62,11 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea
return UpdateControl.updateStatus(resource); 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, log.log(Level.INFO,
"Could not yet reconcile user " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace()); "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()); + errorMessage);
resource.setStatus(OzgKeycloakUserStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(errorMessage).build());
return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS)); return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS));
} }
......
...@@ -47,7 +47,7 @@ class KeycloakUserRemoteService { ...@@ -47,7 +47,7 @@ class KeycloakUserRemoteService {
user.getClientRoles().get(clientId).stream() user.getClientRoles().get(clientId).stream()
.map(clientRoleName -> keycloakGenericRemoteService.getClientRole(clientRoleName, appClient.getId(), realm) .map(clientRoleName -> keycloakGenericRemoteService.getClientRole(clientRoleName, appClient.getId(), realm)
.orElseThrow(() -> new KeycloakException( .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)); .forEach(clientRole -> addClientRoleToUser(clientRole, realmResource, userId, appClient));
}); });
......
...@@ -145,9 +145,6 @@ class KeycloakGenericRemoteServiceTest { ...@@ -145,9 +145,6 @@ class KeycloakGenericRemoteServiceTest {
when(keycloak.realm(REALM)).thenReturn(realmResource); when(keycloak.realm(REALM)).thenReturn(realmResource);
when(realmResource.clients()).thenReturn(clientsResource); when(realmResource.clients()).thenReturn(clientsResource);
when(clientsResource.get(REAL_CLIENT_ID)).thenReturn(clientResource); 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 @Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment