use of com.redhat.service.smartevents.infra.exceptions.BridgeError in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class BridgeErrorServiceTest method checkExceptionIsNotInCatalog.
private void checkExceptionIsNotInCatalog(Class<?> clazz) {
BridgeError bridgeError = service.getError(clazz).get();
assertThat(bridgeError).withFailMessage(String.format("exception %s not found in the errors", clazz)).isNotNull();
assertThat(service.getUserError(bridgeError.getId())).withFailMessage(String.format("exception %s should not be in the user errors", clazz)).isEmpty();
}
use of com.redhat.service.smartevents.infra.exceptions.BridgeError in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class ExternalUserExceptionMapper method toResponse.
@Override
public Response toResponse(ExternalUserException e) {
LOGGER.debug("Failure", e);
Optional<BridgeError> error = bridgeErrorService.getError(e);
ResponseBuilder builder = Response.status(e.getStatusCode());
if (error.isPresent()) {
ErrorResponse errorResponse = ErrorResponse.from(error.get());
errorResponse.setReason(e.getMessage());
builder.entity(errorResponse);
} else {
LOGGER.warn("Information for exception type {} cannot be found", e.getClass());
builder.entity(e.getMessage());
}
return builder.build();
}
use of com.redhat.service.smartevents.infra.exceptions.BridgeError in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class BridgeExecutorController method reconcile.
@Override
public UpdateControl<BridgeExecutor> reconcile(BridgeExecutor bridgeExecutor, Context context) {
LOGGER.debug("Create or update BridgeProcessor: '{}' in namespace '{}'", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
Secret secret = bridgeExecutorService.fetchBridgeExecutorSecret(bridgeExecutor);
if (secret == null) {
LOGGER.debug("Secrets for the BridgeProcessor '{}' have been not created yet.", bridgeExecutor.getMetadata().getName());
return UpdateControl.noUpdate();
}
// Check if the image of the executor has to be updated
String image = bridgeExecutorService.getExecutorImage();
if (!image.equals(bridgeExecutor.getSpec().getImage())) {
bridgeExecutor.getSpec().setImage(image);
return UpdateControl.updateResource(bridgeExecutor);
}
Deployment deployment = bridgeExecutorService.fetchOrCreateBridgeExecutorDeployment(bridgeExecutor, secret);
if (!Readiness.isDeploymentReady(deployment)) {
LOGGER.debug("Executor deployment BridgeProcessor: '{}' in namespace '{}' is NOT ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
bridgeExecutor.getStatus().setConditionsFromDeployment(deployment);
if (DeploymentStatusUtils.isTimeoutFailure(deployment)) {
notifyDeploymentFailure(bridgeExecutor, DeploymentStatusUtils.getReasonAndMessageForTimeoutFailure(deployment));
} else if (DeploymentStatusUtils.isStatusReplicaFailure(deployment)) {
notifyDeploymentFailure(bridgeExecutor, DeploymentStatusUtils.getReasonAndMessageForReplicaFailure(deployment));
}
return UpdateControl.updateStatus(bridgeExecutor);
}
LOGGER.debug("Executor deployment BridgeProcessor: '{}' in namespace '{}' is ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
// Create Service
Service service = bridgeExecutorService.fetchOrCreateBridgeExecutorService(bridgeExecutor, deployment);
if (service.getStatus() == null) {
LOGGER.debug("Executor service BridgeProcessor: '{}' in namespace '{}' is NOT ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
bridgeExecutor.getStatus().markConditionFalse(ConditionType.Ready);
bridgeExecutor.getStatus().markConditionTrue(ConditionType.Augmentation, ConditionReason.ServiceNotReady);
return UpdateControl.updateStatus(bridgeExecutor);
}
Optional<ServiceMonitor> serviceMonitor = monitorService.fetchOrCreateServiceMonitor(bridgeExecutor, service, BridgeExecutor.COMPONENT_NAME);
if (serviceMonitor.isPresent()) {
// this is an optional resource
LOGGER.debug("Executor service monitor resource BridgeExecutor: '{}' in namespace '{}' is ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
} else {
LOGGER.warn("Executor service monitor resource BridgeExecutor: '{}' in namespace '{}' is failed to deploy, Prometheus not installed.", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
BridgeError prometheusNotAvailableError = bridgeErrorService.getError(PrometheusNotInstalledException.class).orElseThrow(() -> new RuntimeException("PrometheusNotInstalledException not found in error catalog"));
bridgeExecutor.getStatus().markConditionFalse(ConditionType.Ready, ConditionReason.PrometheusUnavailable, prometheusNotAvailableError.getReason(), prometheusNotAvailableError.getCode());
notifyManager(bridgeExecutor, ManagedResourceStatus.FAILED);
return UpdateControl.updateStatus(bridgeExecutor);
}
LOGGER.debug("Executor service BridgeProcessor: '{}' in namespace '{}' is ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
if (!bridgeExecutor.getStatus().isReady()) {
bridgeExecutor.getStatus().markConditionTrue(ConditionType.Ready);
bridgeExecutor.getStatus().markConditionFalse(ConditionType.Augmentation);
notifyManager(bridgeExecutor, ManagedResourceStatus.READY);
return UpdateControl.updateStatus(bridgeExecutor);
}
return UpdateControl.noUpdate();
}
use of com.redhat.service.smartevents.infra.exceptions.BridgeError in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class BridgeErrorServiceTest method checkExceptionIsInCatalog.
private void checkExceptionIsInCatalog(Class<?> clazz) {
BridgeError bridgeError = service.getError(clazz).get();
assertThat(bridgeError).withFailMessage(String.format("exception %s not found in the errors", clazz)).isNotNull();
assertThat(service.getUserError(bridgeError.getId())).withFailMessage(String.format("exception %s not found in the user errors", clazz)).isNotEmpty();
}
use of com.redhat.service.smartevents.infra.exceptions.BridgeError in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class BridgeIngressController method reconcile.
@Override
public UpdateControl<BridgeIngress> reconcile(BridgeIngress bridgeIngress, Context context) {
LOGGER.debug("Create or update BridgeIngress: '{}' in namespace '{}'", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
Secret secret = bridgeIngressService.fetchBridgeIngressSecret(bridgeIngress);
if (secret == null) {
LOGGER.debug("Secrets for the BridgeIngress '{}' have been not created yet.", bridgeIngress.getMetadata().getName());
return UpdateControl.noUpdate();
}
// Check if the image of the ingress has to be updated
String image = bridgeIngressService.getIngressImage();
if (!image.equals(bridgeIngress.getSpec().getImage())) {
bridgeIngress.getSpec().setImage(image);
return UpdateControl.updateResource(bridgeIngress);
}
Deployment deployment = bridgeIngressService.fetchOrCreateBridgeIngressDeployment(bridgeIngress, secret);
if (!Readiness.isDeploymentReady(deployment)) {
LOGGER.debug("Ingress deployment BridgeIngress: '{}' in namespace '{}' is NOT ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
bridgeIngress.getStatus().setConditionsFromDeployment(deployment);
if (DeploymentStatusUtils.isTimeoutFailure(deployment)) {
notifyDeploymentFailure(bridgeIngress, DeploymentStatusUtils.getReasonAndMessageForTimeoutFailure(deployment));
} else if (DeploymentStatusUtils.isStatusReplicaFailure(deployment)) {
notifyDeploymentFailure(bridgeIngress, DeploymentStatusUtils.getReasonAndMessageForReplicaFailure(deployment));
}
return UpdateControl.updateStatus(bridgeIngress);
}
LOGGER.debug("Ingress deployment BridgeIngress: '{}' in namespace '{}' is ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
// Create Service
Service service = bridgeIngressService.fetchOrCreateBridgeIngressService(bridgeIngress, deployment);
if (service.getStatus() == null) {
LOGGER.debug("Ingress service BridgeIngress: '{}' in namespace '{}' is NOT ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
bridgeIngress.getStatus().markConditionFalse(ConditionType.Ready);
bridgeIngress.getStatus().markConditionTrue(ConditionType.Augmentation, ConditionReason.ServiceNotReady);
return UpdateControl.updateStatus(bridgeIngress);
}
LOGGER.debug("Ingress service BridgeIngress: '{}' in namespace '{}' is ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
// Create Route
NetworkResource networkResource = networkingService.fetchOrCreateNetworkIngress(bridgeIngress, service);
if (!networkResource.isReady()) {
LOGGER.debug("Ingress networking resource BridgeIngress: '{}' in namespace '{}' is NOT ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
bridgeIngress.getStatus().markConditionFalse(ConditionType.Ready);
bridgeIngress.getStatus().markConditionTrue(ConditionType.Augmentation, ConditionReason.NetworkResourceNotReady);
return UpdateControl.updateStatus(bridgeIngress);
}
LOGGER.debug("Ingress networking resource BridgeIngress: '{}' in namespace '{}' is ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
Optional<ServiceMonitor> serviceMonitor = monitorService.fetchOrCreateServiceMonitor(bridgeIngress, service, BridgeIngress.COMPONENT_NAME);
if (serviceMonitor.isPresent()) {
// this is an optional resource
LOGGER.debug("Ingress monitor resource BridgeIngress: '{}' in namespace '{}' is ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
} else {
LOGGER.warn("Ingress monitor resource BridgeIngress: '{}' in namespace '{}' is failed to deploy, Prometheus not installed.", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
BridgeError prometheusNotAvailableError = bridgeErrorService.getError(PrometheusNotInstalledException.class).orElseThrow(() -> new RuntimeException("PrometheusNotInstalledException not found in error catalog"));
bridgeIngress.getStatus().markConditionFalse(ConditionType.Ready, ConditionReason.PrometheusUnavailable, prometheusNotAvailableError.getReason(), prometheusNotAvailableError.getCode());
notifyManager(bridgeIngress, ManagedResourceStatus.FAILED);
return UpdateControl.updateStatus(bridgeIngress);
}
if (!bridgeIngress.getStatus().isReady() || !networkResource.getEndpoint().equals(bridgeIngress.getStatus().getEndpoint())) {
bridgeIngress.getStatus().setEndpoint(networkResource.getEndpoint());
bridgeIngress.getStatus().markConditionTrue(ConditionType.Ready);
bridgeIngress.getStatus().markConditionFalse(ConditionType.Augmentation);
notifyManager(bridgeIngress, ManagedResourceStatus.READY);
return UpdateControl.updateStatus(bridgeIngress);
}
return UpdateControl.noUpdate();
}
Aggregations