From e8ffaf2b474c90c3fd14e20b44421218f1021961 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 6 Jul 2023 09:32:24 +0200 Subject: [PATCH] OZG-3961 - remove errorStatusHandler in all reconcilers --- .../client/KeycloakClientReconciler.java | 39 +++++++++--------- .../group/KeycloakGroupReconciler.java | 40 +++++++++---------- .../realm/KeycloakRealmReconciler.java | 34 ++++++++-------- .../keycloak/user/KeycloakUserReconciler.java | 39 +++++++++--------- .../client/KeycloakClientReconcilerTest.java | 40 +++++++++---------- .../group/KeycloakGroupReconcilerTest.java | 38 +++++++++--------- .../user/KeycloakUserReconcilerTest.java | 6 ++- 7 files changed, 118 insertions(+), 118 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 3f45f39..f83e774 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java @@ -11,8 +11,6 @@ import de.ozgcloud.operator.Config; import de.ozgcloud.operator.keycloak.OzgCustomResourceStatus; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusHandler; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusUpdateControl; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import lombok.extern.java.Log; @@ -20,7 +18,7 @@ import lombok.extern.java.Log; @ControllerConfiguration @Component @Log -public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>, ErrorStatusHandler<OzgKeycloakClient> { +public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient> { @Autowired private KeycloakClientService service; @@ -31,18 +29,28 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>, @Override public UpdateControl<OzgKeycloakClient> reconcile(OzgKeycloakClient resource, Context<OzgKeycloakClient> context) { - String crdName = resource.getMetadata().getName(); + try { + String crdName = resource.getMetadata().getName(); - log.info("Reconcile KeycloakClient " + crdName); + log.info("Reconcile KeycloakClient " + crdName); - Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource); - if (preconditionError.isPresent()) { - return buildStatusInProgress(resource, preconditionError.get()); - } + Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource); + if (preconditionError.isPresent()) { + return buildStatusInProgress(resource, preconditionError.get()); + } - service.createOrUpdateClient(resource.getSpec(), resource.getMetadata().getNamespace()); + service.createOrUpdateClient(resource.getSpec(), resource.getMetadata().getNamespace()); - return buildStatusOk(resource); + return buildStatusOk(resource); + } catch (Exception e) { + log.log(Level.SEVERE, + "Could not reconcile client " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace() + ": " + + e.getMessage(), + e); + resource.setStatus(OzgKeycloakClientStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build()); + UpdateControl.updateStatus(resource); + throw e; + } } private UpdateControl<OzgKeycloakClient> buildStatusOk(OzgKeycloakClient resource) { @@ -57,13 +65,4 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>, resource.setStatus(OzgKeycloakClientStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(errorMessage).build()); return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS)); } - - @Override - public ErrorStatusUpdateControl<OzgKeycloakClient> updateErrorStatus(OzgKeycloakClient resource, Context<OzgKeycloakClient> context, - Exception e) { - log.log(Level.SEVERE, - "Could not reconcile client " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace(), e); - resource.setStatus(OzgKeycloakClientStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build()); - return ErrorStatusUpdateControl.updateStatus(resource); - } } 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 d9f34e4..437efde 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java @@ -11,8 +11,6 @@ import de.ozgcloud.operator.Config; import de.ozgcloud.operator.keycloak.OzgCustomResourceStatus; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusHandler; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusUpdateControl; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import lombok.extern.java.Log; @@ -20,7 +18,7 @@ import lombok.extern.java.Log; @ControllerConfiguration @Component @Log -public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, ErrorStatusHandler<OzgKeycloakGroup> { +public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup> { @Autowired private KeycloakGroupService service; @@ -31,18 +29,28 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er @Override public UpdateControl<OzgKeycloakGroup> reconcile(OzgKeycloakGroup resource, Context<OzgKeycloakGroup> context) { - String crdName = resource.getMetadata().getName(); + try { + String crdName = resource.getMetadata().getName(); - log.info("Reconcile KeycloakGroup " + crdName); + log.info("Reconcile KeycloakGroup " + crdName); - Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource); - if (preconditionError.isPresent()) { - return buildStatusInProgress(resource, preconditionError.get()); - } + Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource); + if (preconditionError.isPresent()) { + return buildStatusInProgress(resource, preconditionError.get()); + } - service.createGroup(resource.getSpec(), resource.getMetadata().getNamespace()); + service.createGroup(resource.getSpec(), resource.getMetadata().getNamespace()); - return buildStatusOk(resource); + return buildStatusOk(resource); + } catch (Exception e) { + log.log(Level.SEVERE, + "Could not reconcile group " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace() + ": " + + e.getMessage(), + e); + resource.setStatus(OzgKeycloakGroupStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build()); + UpdateControl.updateStatus(resource); + throw e; + } } UpdateControl<OzgKeycloakGroup> buildStatusOk(OzgKeycloakGroup resource) { @@ -57,14 +65,4 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er resource.setStatus(OzgKeycloakGroupStatus.builder().status(OzgCustomResourceStatus.IN_PROGRESS).message(errorMessage).build()); return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS)); } - - @Override - public ErrorStatusUpdateControl<OzgKeycloakGroup> updateErrorStatus( - OzgKeycloakGroup resource, Context<OzgKeycloakGroup> context, - Exception e) { - log.log(Level.SEVERE, - "Could not reconcile group " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace(), e); - resource.setStatus(OzgKeycloakGroupStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build()); - return ErrorStatusUpdateControl.updateStatus(resource); - } } \ No newline at end of file diff --git a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java index 8337873..1675062 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java @@ -10,8 +10,6 @@ import io.javaoperatorsdk.operator.api.reconciler.Cleaner; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusHandler; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusUpdateControl; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import lombok.extern.java.Log; @@ -19,7 +17,7 @@ import lombok.extern.java.Log; @ControllerConfiguration @Component @Log -public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cleaner<OzgKeycloakRealm>, ErrorStatusHandler<OzgKeycloakRealm> { +public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cleaner<OzgKeycloakRealm> { @Autowired private KeycloakRealmService service; @@ -27,14 +25,25 @@ public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cl @Override public UpdateControl<OzgKeycloakRealm> reconcile(OzgKeycloakRealm resource, Context<OzgKeycloakRealm> context) { - String realmName = resource.getMetadata().getNamespace(); + try { + String realmName = resource.getMetadata().getNamespace(); - log.info("Reconcile KeycloakRealm " + realmName + " (crd name " + resource.getMetadata().getName() + ")"); + log.info("Reconcile KeycloakRealm " + realmName + " (crd name " + resource.getMetadata().getName() + ")"); - service.createRealm(resource.getSpec(), realmName); + service.createRealm(resource.getSpec(), realmName); - resource.setStatus(OzgKeycloakRealmStatus.builder().status(OzgCustomResourceStatus.OK).message(null).build()); - return UpdateControl.updateStatus(resource); + resource.setStatus(OzgKeycloakRealmStatus.builder().status(OzgCustomResourceStatus.OK).message(null).build()); + return UpdateControl.updateStatus(resource); + + } catch (Exception e) { + log.log(Level.SEVERE, + "Could not reconcile realm " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace() + ": " + + e.getMessage(), + e); + resource.setStatus(OzgKeycloakRealmStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build()); + UpdateControl.updateStatus(resource); + throw e; + } } @Override @@ -54,13 +63,4 @@ public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cl return DeleteControl.defaultDelete(); } } - - @Override - public ErrorStatusUpdateControl<OzgKeycloakRealm> updateErrorStatus(OzgKeycloakRealm resource, Context<OzgKeycloakRealm> context, - Exception e) { - log.log(Level.SEVERE, - "Could not reconcile realm " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace(), e); - resource.setStatus(OzgKeycloakRealmStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build()); - return ErrorStatusUpdateControl.updateStatus(resource); - } } 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 fcbbd93..d1eae89 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java @@ -13,8 +13,6 @@ import io.javaoperatorsdk.operator.api.reconciler.Cleaner; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusHandler; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusUpdateControl; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import lombok.extern.java.Log; @@ -22,7 +20,7 @@ import lombok.extern.java.Log; @ControllerConfiguration @Component @Log -public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Cleaner<OzgKeycloakUser>, ErrorStatusHandler<OzgKeycloakUser> { +public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Cleaner<OzgKeycloakUser> { @Autowired private KeycloakUserService keycloakUserService; @@ -33,17 +31,28 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea @Override public UpdateControl<OzgKeycloakUser> reconcile(OzgKeycloakUser resource, Context<OzgKeycloakUser> context) { - log.info("Reconciling KeycloakUser " + resource.getMetadata().getName()); - String namespace = resource.getMetadata().getNamespace(); + try { + log.info("Reconciling KeycloakUser " + resource.getMetadata().getName()); + String namespace = resource.getMetadata().getNamespace(); - Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource); - if (preconditionError.isPresent()) { - return buildStatusInProgress(resource, preconditionError.get()); - } + Optional<String> preconditionError = preconditionService.getReconcilePreconditionErrors(resource); + if (preconditionError.isPresent()) { + return buildStatusInProgress(resource, preconditionError.get()); + } - keycloakUserService.createOrUpdateUser(resource.getSpec(), namespace); + keycloakUserService.createOrUpdateUser(resource.getSpec(), namespace); - return buildStatusOk(resource); + return buildStatusOk(resource); + + } catch (Exception e) { + log.log(Level.SEVERE, + "Could not reconcile user " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace() + ": " + + e.getMessage(), + e); + resource.setStatus(OzgKeycloakUserStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build()); + UpdateControl.updateStatus(resource); + throw e; + } } private UpdateControl<OzgKeycloakUser> buildStatusOk(OzgKeycloakUser resource) { @@ -73,12 +82,4 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea return DeleteControl.defaultDelete(); } } - - @Override - public ErrorStatusUpdateControl<OzgKeycloakUser> updateErrorStatus(OzgKeycloakUser resource, Context<OzgKeycloakUser> context, Exception e) { - log.log(Level.SEVERE, - "Could not reconcile user " + resource.getMetadata().getName() + " in namespace " + resource.getMetadata().getNamespace(), e); - resource.setStatus(OzgKeycloakUserStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build()); - return ErrorStatusUpdateControl.updateStatus(resource); - } } diff --git a/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconcilerTest.java b/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconcilerTest.java index ac8307f..66da54d 100644 --- a/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconcilerTest.java +++ b/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconcilerTest.java @@ -63,24 +63,24 @@ class KeycloakClientReconcilerTest { assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCustomResourceStatus.IN_PROGRESS); } } - - @Nested - class TestUpdateErrorStatus { - - @Test - void shouldSetErrorStatus() { - var response = reconciler.updateErrorStatus(OzgKeycloakClientTestFactory.create(), null, new RuntimeException(ERROR_MESSAGE)); - - assertThat(response.getResource()).isPresent().map(OzgKeycloakClient::getStatus).map(OzgKeycloakClientStatus::getStatus) - .contains(OzgCustomResourceStatus.ERROR); - } - - @Test - void shouldSetMessage() { - var response = reconciler.updateErrorStatus(OzgKeycloakClientTestFactory.create(), null, new RuntimeException(ERROR_MESSAGE)); - - assertThat(response.getResource()).isPresent().map(OzgKeycloakClient::getStatus).map(OzgKeycloakClientStatus::getMessage) - .contains(ERROR_MESSAGE); - } - } +// +// @Nested +// class TestUpdateErrorStatus { +// +// @Test +// void shouldSetErrorStatus() { +// var response = reconciler.updateErrorStatus(OzgKeycloakClientTestFactory.create(), null, new RuntimeException(ERROR_MESSAGE)); +// +// assertThat(response.getResource()).isPresent().map(OzgKeycloakClient::getStatus).map(OzgKeycloakClientStatus::getStatus) +// .contains(OzgCustomResourceStatus.ERROR); +// } +// +// @Test +// void shouldSetMessage() { +// var response = reconciler.updateErrorStatus(OzgKeycloakClientTestFactory.create(), null, new RuntimeException(ERROR_MESSAGE)); +// +// assertThat(response.getResource()).isPresent().map(OzgKeycloakClient::getStatus).map(OzgKeycloakClientStatus::getMessage) +// .contains(ERROR_MESSAGE); +// } +// } } diff --git a/src/test/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconcilerTest.java b/src/test/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconcilerTest.java index 7e7ab34..2c37af2 100644 --- a/src/test/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconcilerTest.java +++ b/src/test/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconcilerTest.java @@ -64,23 +64,23 @@ class KeycloakGroupReconcilerTest { } } - @Nested - class TestUpdateErrorStatus { - - @Test - void shouldSetErrorStatus() { - var response = reconciler.updateErrorStatus(OzgKeycloakGroupTestFactory.create(), null, new RuntimeException(ERROR_MESSAGE)); - - assertThat(response.getResource()).isPresent().map(OzgKeycloakGroup::getStatus).map(OzgKeycloakGroupStatus::getStatus) - .contains(OzgCustomResourceStatus.ERROR); - } - - @Test - void shouldSetMessage() { - var response = reconciler.updateErrorStatus(OzgKeycloakGroupTestFactory.create(), null, new RuntimeException(ERROR_MESSAGE)); - - assertThat(response.getResource()).isPresent().map(OzgKeycloakGroup::getStatus).map(OzgKeycloakGroupStatus::getMessage) - .contains(ERROR_MESSAGE); - } - } +// @Nested +// class TestUpdateErrorStatus { +// +// @Test +// void shouldSetErrorStatus() { +// var response = reconciler.updateErrorStatus(OzgKeycloakGroupTestFactory.create(), null, new RuntimeException(ERROR_MESSAGE)); +// +// assertThat(response.getResource()).isPresent().map(OzgKeycloakGroup::getStatus).map(OzgKeycloakGroupStatus::getStatus) +// .contains(OzgCustomResourceStatus.ERROR); +// } +// +// @Test +// void shouldSetMessage() { +// var response = reconciler.updateErrorStatus(OzgKeycloakGroupTestFactory.create(), null, new RuntimeException(ERROR_MESSAGE)); +// +// assertThat(response.getResource()).isPresent().map(OzgKeycloakGroup::getStatus).map(OzgKeycloakGroupStatus::getMessage) +// .contains(ERROR_MESSAGE); +// } +// } } diff --git a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java index 94e4730..4eef3cc 100644 --- a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java +++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java @@ -7,6 +7,7 @@ import static org.mockito.Mockito.*; import java.util.Optional; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -71,14 +72,15 @@ class KeycloakUserReconcilerTest { } @Nested + @Disabled("ErrorStatusHandler erstmal deaktiviert weil der nicht funktioniert hat") class TestErrorStatusUpdateControl { @Test void shouldSetErrorStatusOnException() { OzgKeycloakUser user = OzgKeycloakUserTestFactory.create(); -// doThrow(new RuntimeException()).when(userService).createOrUpdateUser(any(), any()); + doThrow(new RuntimeException()).when(userService).createOrUpdateUser(any(), any()); - conciler.updateErrorStatus(user, null, new RuntimeException()); + conciler.reconcile(user, null); assertThat(user.getStatus().getStatus()).isEqualTo(OzgCustomResourceStatus.ERROR); } -- GitLab