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

OZG-3961 - remove errorStatusHandler in all reconcilers

parent c60eaaa3
Branches
Tags
No related merge requests found
......@@ -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,6 +29,7 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>,
@Override
public UpdateControl<OzgKeycloakClient> reconcile(OzgKeycloakClient resource, Context<OzgKeycloakClient> context) {
try {
String crdName = resource.getMetadata().getName();
log.info("Reconcile KeycloakClient " + crdName);
......@@ -43,6 +42,15 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient>,
service.createOrUpdateClient(resource.getSpec(), resource.getMetadata().getNamespace());
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);
}
}
......@@ -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,6 +29,7 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er
@Override
public UpdateControl<OzgKeycloakGroup> reconcile(OzgKeycloakGroup resource, Context<OzgKeycloakGroup> context) {
try {
String crdName = resource.getMetadata().getName();
log.info("Reconcile KeycloakGroup " + crdName);
......@@ -43,6 +42,15 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup>, Er
service.createGroup(resource.getSpec(), resource.getMetadata().getNamespace());
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
......@@ -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,6 +25,7 @@ public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cl
@Override
public UpdateControl<OzgKeycloakRealm> reconcile(OzgKeycloakRealm resource, Context<OzgKeycloakRealm> context) {
try {
String realmName = resource.getMetadata().getNamespace();
log.info("Reconcile KeycloakRealm " + realmName + " (crd name " + resource.getMetadata().getName() + ")");
......@@ -35,6 +34,16 @@ public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cl
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);
}
}
......@@ -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,6 +31,7 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea
@Override
public UpdateControl<OzgKeycloakUser> reconcile(OzgKeycloakUser resource, Context<OzgKeycloakUser> context) {
try {
log.info("Reconciling KeycloakUser " + resource.getMetadata().getName());
String namespace = resource.getMetadata().getNamespace();
......@@ -44,6 +43,16 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea
keycloakUserService.createOrUpdateUser(resource.getSpec(), namespace);
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);
}
}
......@@ -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);
// }
// }
}
......@@ -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);
// }
// }
}
......@@ -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);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment