use of io.hops.hopsworks.alerting.exceptions.AlertManagerResponseException in project hopsworks by logicalclocks.
the class ProjectAlertsResource method getTestById.
@POST
@Path("{id}/test")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Test alert by Id.", response = ProjectAlertsDTO.class)
@AllowedProjectRoles({ AllowedProjectRoles.DATA_OWNER, AllowedProjectRoles.DATA_SCIENTIST })
@JWTRequired(acceptedTokens = { Audience.API }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
public Response getTestById(@PathParam("id") Integer id, @Context UriInfo uriInfo, @Context SecurityContext sc) throws ProjectException, AlertException {
Project project = getProject();
ProjectServiceAlert projectServiceAlert = projectServiceAlertsFacade.findByProjectAndId(project, id);
List<Alert> alerts;
try {
alerts = alertController.testAlert(project, projectServiceAlert);
} catch (AlertManagerUnreachableException | AlertManagerClientCreateException e) {
throw new AlertException(RESTCodes.AlertErrorCode.FAILED_TO_CONNECT, Level.FINE, e.getMessage());
} catch (AlertManagerAccessControlException e) {
throw new AlertException(RESTCodes.AlertErrorCode.ACCESS_CONTROL_EXCEPTION, Level.FINE, e.getMessage());
} catch (AlertManagerResponseException e) {
throw new AlertException(RESTCodes.AlertErrorCode.RESPONSE_ERROR, Level.FINE, e.getMessage());
}
ResourceRequest resourceRequest = new ResourceRequest(ResourceRequest.Name.ALERTS);
AlertDTO alertDTO = alertBuilder.getAlertDTOs(uriInfo, resourceRequest, alerts, project);
return Response.ok().entity(alertDTO).build();
}
use of io.hops.hopsworks.alerting.exceptions.AlertManagerResponseException in project hopsworks by logicalclocks.
the class AlertManagerClient method sendRequest.
private Response sendRequest(Invocation.Builder invocationBuilder, RequestMethod method, Entity<String> entity) throws AlertManagerServerException, AlertManagerResponseException {
Response response = null;
try {
switch(method) {
case GET:
response = invocationBuilder.get();
break;
case POST:
response = invocationBuilder.post(entity);
break;
case DELETE:
response = invocationBuilder.delete();
break;
}
} catch (Exception e) {
throw new AlertManagerServerException(e.getMessage());
}
checkResponse(response);
return response;
}
use of io.hops.hopsworks.alerting.exceptions.AlertManagerResponseException in project hopsworks by logicalclocks.
the class AlertBuilder method items.
private AlertGroupDTO items(AlertGroupDTO dto, UriInfo uriInfo, ResourceRequest resourceRequest, AlertFilterBy alertFilterBy, Project project) throws AlertException {
uri(dto, uriInfo);
expandAlertGroups(dto, resourceRequest);
if (dto.isExpand()) {
List<AlertGroup> alertGroups;
try {
if (project != null) {
alertGroups = alertManager.getAlertGroups(alertFilterBy.isActive(), alertFilterBy.isSilenced(), alertFilterBy.isInhibited(), alertFilterBy.getFilter(), alertFilterBy.getReceiver(), project);
} else {
alertGroups = alertManager.getAlertGroups(alertFilterBy.isActive(), alertFilterBy.isSilenced(), alertFilterBy.isInhibited(), alertFilterBy.getFilter(), alertFilterBy.getReceiver());
}
} catch (AlertManagerResponseException a) {
throw new AlertException(RESTCodes.AlertErrorCode.RESPONSE_ERROR, Level.FINE, a.getMessage());
} catch (AlertManagerClientCreateException | AlertManagerUnreachableException e) {
throw new AlertException(RESTCodes.AlertErrorCode.FAILED_TO_CONNECT, Level.FINE, e.getMessage());
} catch (AlertManagerAccessControlException e) {
throw new AlertException(RESTCodes.AlertErrorCode.ACCESS_CONTROL_EXCEPTION, Level.FINE, e.getMessage());
}
dto.setCount((long) alertGroups.size());
return items(dto, uriInfo, resourceRequest, alertGroups);
}
return dto;
}
use of io.hops.hopsworks.alerting.exceptions.AlertManagerResponseException in project hopsworks by logicalclocks.
the class SilenceBuilder method items.
private SilenceDTO items(SilenceDTO dto, UriInfo uriInfo, ResourceRequest resourceRequest, SilenceBeanParam silenceBeanParam, Project project) throws AlertException {
uri(dto, uriInfo);
expand(dto, resourceRequest);
if (dto.isExpand()) {
List<Silence> silenceList;
try {
if (project != null) {
silenceList = alertManager.getSilences(silenceBeanParam.getSilenceFilterBy().getFilter(), project);
} else {
silenceList = alertManager.getSilences(silenceBeanParam.getSilenceFilterBy().getFilter());
}
} catch (AlertManagerClientCreateException | AlertManagerUnreachableException e) {
throw new AlertException(RESTCodes.AlertErrorCode.FAILED_TO_CONNECT, Level.FINE, e.getMessage());
} catch (AlertManagerResponseException e) {
throw new AlertException(RESTCodes.AlertErrorCode.RESPONSE_ERROR, Level.FINE, e.getMessage());
} catch (AlertManagerAccessControlException e) {
throw new AlertException(RESTCodes.AlertErrorCode.ACCESS_CONTROL_EXCEPTION, Level.FINE, e.getMessage());
}
if (!Strings.isNullOrEmpty(silenceBeanParam.getSilenceFilterBy().getStatus())) {
silenceList = silenceList.stream().filter((s) -> s.getStatus().getState().equals(silenceBeanParam.getSilenceFilterBy().getStatus())).collect(Collectors.toList());
}
if (!Strings.isNullOrEmpty(silenceBeanParam.getSilenceFilterBy().getCreatedBy())) {
silenceList = silenceList.stream().filter((s) -> s.getCreatedBy().equals(silenceBeanParam.getSilenceFilterBy().getCreatedBy())).collect(Collectors.toList());
}
dto.setCount((long) silenceList.size());
return items(dto, uriInfo, resourceRequest, silenceList, silenceBeanParam);
}
return dto;
}
use of io.hops.hopsworks.alerting.exceptions.AlertManagerResponseException in project hopsworks by logicalclocks.
the class JobAlertsResource method getTestById.
@POST
@Path("{id}/test")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Test alert by Id.", response = ProjectAlertsDTO.class)
@AllowedProjectRoles({ AllowedProjectRoles.DATA_OWNER, AllowedProjectRoles.DATA_SCIENTIST })
@JWTRequired(acceptedTokens = { Audience.API }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
public Response getTestById(@PathParam("id") Integer id, @Context UriInfo uriInfo, @Context SecurityContext sc) throws AlertException {
JobAlert jobAlert = jobalertsFacade.findByJobAndId(job, id);
List<Alert> alerts;
try {
alerts = alertController.testAlert(job.getProject(), jobAlert);
} catch (AlertManagerUnreachableException | AlertManagerClientCreateException e) {
throw new AlertException(RESTCodes.AlertErrorCode.FAILED_TO_CONNECT, Level.FINE, e.getMessage());
} catch (AlertManagerAccessControlException e) {
throw new AlertException(RESTCodes.AlertErrorCode.ACCESS_CONTROL_EXCEPTION, Level.FINE, e.getMessage());
} catch (AlertManagerResponseException e) {
throw new AlertException(RESTCodes.AlertErrorCode.RESPONSE_ERROR, Level.FINE, e.getMessage());
}
ResourceRequest resourceRequest = new ResourceRequest(ResourceRequest.Name.ALERTS);
AlertDTO alertDTO = alertBuilder.getAlertDTOs(uriInfo, resourceRequest, alerts, job.getProject());
return Response.ok().entity(alertDTO).build();
}
Aggregations