Search in sources :

Example 1 with AlertManagerDuplicateEntryException

use of io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException in project hopsworks by logicalclocks.

the class ReceiverResource method create.

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Create a receiver.")
@AllowedProjectRoles({ AllowedProjectRoles.DATA_OWNER })
@JWTRequired(acceptedTokens = { Audience.API }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
public Response create(PostableReceiverDTO postableReceiverDTO, @QueryParam("defaultTemplate") @DefaultValue("false") Boolean defaultTemplate, @Context UriInfo uriInfo, @Context SecurityContext sc) throws AlertException, ProjectException {
    if (postableReceiverDTO == null) {
        throw new AlertException(RESTCodes.AlertErrorCode.ILLEGAL_ARGUMENT, Level.FINE, "No payload.");
    }
    Receiver receiver = receiverBuilder.build(postableReceiverDTO, defaultTemplate, true);
    validateReceiverOneConfig(receiver);
    try {
        alertManagerConfiguration.addReceiver(receiver, getProject());
    } catch (AlertManagerConfigCtrlCreateException | AlertManagerUnreachableException | AlertManagerConfigReadException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.FAILED_TO_READ_CONFIGURATION, Level.FINE, e.getMessage());
    } catch (AlertManagerDuplicateEntryException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.RECEIVER_EXIST, Level.FINE, e.getMessage());
    } catch (AlertManagerConfigUpdateException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.FAILED_TO_UPDATE_AM_CONFIG, Level.FINE, e.getMessage());
    } catch (AlertManagerClientCreateException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.FAILED_TO_CONNECT, Level.FINE, e.getMessage());
    } catch (IllegalArgumentException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.ILLEGAL_ARGUMENT, Level.FINE, e.getMessage());
    }
    ResourceRequest resourceRequest = new ResourceRequest(ResourceRequest.Name.RECEIVERS);
    ReceiverDTO dto = receiverBuilder.build(uriInfo, resourceRequest, receiver.getName(), getProject());
    dto.setHref(uriInfo.getAbsolutePathBuilder().path(receiver.getName()).build());
    return Response.created(dto.getHref()).entity(dto).build();
}
Also used : AlertManagerDuplicateEntryException(io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException) AlertManagerUnreachableException(io.hops.hopsworks.alert.exception.AlertManagerUnreachableException) Receiver(io.hops.hopsworks.alerting.config.dto.Receiver) AlertManagerConfigCtrlCreateException(io.hops.hopsworks.alerting.exceptions.AlertManagerConfigCtrlCreateException) AlertManagerConfigUpdateException(io.hops.hopsworks.alerting.exceptions.AlertManagerConfigUpdateException) ResourceRequest(io.hops.hopsworks.common.api.ResourceRequest) AlertManagerConfigReadException(io.hops.hopsworks.alerting.exceptions.AlertManagerConfigReadException) AlertException(io.hops.hopsworks.exceptions.AlertException) AlertManagerClientCreateException(io.hops.hopsworks.alerting.exceptions.AlertManagerClientCreateException) POST(javax.ws.rs.POST) Produces(javax.ws.rs.Produces) Consumes(javax.ws.rs.Consumes) JWTRequired(io.hops.hopsworks.jwt.annotation.JWTRequired) ApiOperation(io.swagger.annotations.ApiOperation) AllowedProjectRoles(io.hops.hopsworks.api.filter.AllowedProjectRoles)

Example 2 with AlertManagerDuplicateEntryException

use of io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException in project hopsworks by logicalclocks.

the class RouteResource method create.

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Create a route.")
@AllowedProjectRoles({ AllowedProjectRoles.DATA_OWNER })
@JWTRequired(acceptedTokens = { Audience.API }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
public Response create(PostableRouteDTO routeDTO, @Context UriInfo uriInfo, @Context SecurityContext sc) throws AlertException, ProjectException {
    if (routeDTO == null) {
        throw new AlertException(RESTCodes.AlertErrorCode.ILLEGAL_ARGUMENT, Level.FINE, "No payload.");
    }
    Route route = routeBuilder.toRoute(routeDTO);
    try {
        alertManagerConfiguration.addRoute(route, getProject());
    } catch (AlertManagerConfigCtrlCreateException | AlertManagerUnreachableException | AlertManagerConfigReadException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.FAILED_TO_READ_CONFIGURATION, Level.FINE, e.getMessage());
    } catch (AlertManagerDuplicateEntryException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.RECEIVER_EXIST, Level.FINE, e.getMessage());
    } catch (AlertManagerConfigUpdateException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.FAILED_TO_UPDATE_AM_CONFIG, Level.FINE, e.getMessage());
    } catch (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 (IllegalArgumentException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.ILLEGAL_ARGUMENT, Level.FINE, e.getMessage());
    } catch (AlertManagerNoSuchElementException e) {
        throw new AlertException(RESTCodes.AlertErrorCode.RECEIVER_NOT_FOUND, Level.FINE, e.getMessage());
    }
    ResourceRequest resourceRequest = new ResourceRequest(ResourceRequest.Name.ROUTES);
    RouteDTO dto = routeBuilder.build(uriInfo, resourceRequest, route, getProject());
    routeBuilder.uriItem(dto, uriInfo, route);
    return Response.created(dto.getHref()).entity(dto).build();
}
Also used : AlertManagerUnreachableException(io.hops.hopsworks.alert.exception.AlertManagerUnreachableException) AlertManagerAccessControlException(io.hops.hopsworks.alert.exception.AlertManagerAccessControlException) AlertManagerConfigUpdateException(io.hops.hopsworks.alerting.exceptions.AlertManagerConfigUpdateException) AlertManagerClientCreateException(io.hops.hopsworks.alerting.exceptions.AlertManagerClientCreateException) AlertManagerDuplicateEntryException(io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException) AlertManagerNoSuchElementException(io.hops.hopsworks.alerting.exceptions.AlertManagerNoSuchElementException) AlertManagerConfigCtrlCreateException(io.hops.hopsworks.alerting.exceptions.AlertManagerConfigCtrlCreateException) ResourceRequest(io.hops.hopsworks.common.api.ResourceRequest) AlertManagerConfigReadException(io.hops.hopsworks.alerting.exceptions.AlertManagerConfigReadException) AlertException(io.hops.hopsworks.exceptions.AlertException) Route(io.hops.hopsworks.alerting.config.dto.Route) POST(javax.ws.rs.POST) Produces(javax.ws.rs.Produces) Consumes(javax.ws.rs.Consumes) JWTRequired(io.hops.hopsworks.jwt.annotation.JWTRequired) ApiOperation(io.swagger.annotations.ApiOperation) AllowedProjectRoles(io.hops.hopsworks.api.filter.AllowedProjectRoles)

Example 3 with AlertManagerDuplicateEntryException

use of io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException in project hopsworks by logicalclocks.

the class AlertManagerConfigController method addPagerdutyToReceiver.

/**
 * @param name
 * @param pagerdutyConfig
 * @return updated AlertManagerConfig
 * @throws IOException
 * @throws AlertManagerNoSuchElementException
 * @throws AlertManagerDuplicateEntryException
 * @throws AlertManagerConfigUpdateException
 * @throws IllegalArgumentException if pagerdutyConfig is missing both RoutingKey and ServiceKey
 */
public AlertManagerConfig addPagerdutyToReceiver(String name, PagerdutyConfig pagerdutyConfig) throws AlertManagerNoSuchElementException, AlertManagerDuplicateEntryException, AlertManagerConfigReadException {
    validate(pagerdutyConfig);
    AlertManagerConfig alertManagerConfig = read();
    int index = getIndexOfReceiver(alertManagerConfig, name);
    Receiver receiverToUpdate = alertManagerConfig.getReceivers().get(index);
    if (receiverToUpdate.getPagerdutyConfigs() == null) {
        receiverToUpdate.setPagerdutyConfigs(new ArrayList<>());
    }
    if (receiverToUpdate.getPagerdutyConfigs().contains(pagerdutyConfig)) {
        throw new AlertManagerDuplicateEntryException("A receiver with the same api url and channel already exists.");
    }
    receiverToUpdate.getPagerdutyConfigs().add(pagerdutyConfig);
    return alertManagerConfig;
}
Also used : AlertManagerConfig(io.hops.hopsworks.alerting.config.dto.AlertManagerConfig) AlertManagerDuplicateEntryException(io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException) Receiver(io.hops.hopsworks.alerting.config.dto.Receiver)

Example 4 with AlertManagerDuplicateEntryException

use of io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException in project hopsworks by logicalclocks.

the class AlertManagerConfigController method addReceiver.

/**
 * @param receiver
 * @return updated AlertManagerConfig
 * @throws IOException
 * @throws AlertManagerDuplicateEntryException
 * @throws AlertManagerConfigUpdateException
 * @throws IllegalArgumentException if receiver is missing configuration
 */
public AlertManagerConfig addReceiver(Receiver receiver) throws AlertManagerDuplicateEntryException, AlertManagerConfigReadException {
    validate(receiver);
    AlertManagerConfig alertManagerConfig = read();
    if (alertManagerConfig.getReceivers() == null) {
        alertManagerConfig.setReceivers(new ArrayList<>());
    }
    if (alertManagerConfig.getReceivers().contains(receiver)) {
        throw new AlertManagerDuplicateEntryException("A receiver with the same name already exists.");
    }
    alertManagerConfig.getReceivers().add(receiver);
    return alertManagerConfig;
}
Also used : AlertManagerConfig(io.hops.hopsworks.alerting.config.dto.AlertManagerConfig) AlertManagerDuplicateEntryException(io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException)

Example 5 with AlertManagerDuplicateEntryException

use of io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException in project hopsworks by logicalclocks.

the class AlertManagerConfigController method updateReceiver.

/**
 * @param name
 * @param receiver
 * @return updated AlertManagerConfig
 * @throws IOException
 * @throws AlertManagerNoSuchElementException
 * @throws AlertManagerDuplicateEntryException
 * @throws AlertManagerConfigUpdateException
 * @throws IllegalArgumentException if receiver is missing configuration
 */
public AlertManagerConfig updateReceiver(String name, Receiver receiver) throws AlertManagerNoSuchElementException, AlertManagerDuplicateEntryException, AlertManagerConfigReadException {
    validate(receiver);
    AlertManagerConfig alertManagerConfig = read();
    int index = getIndexOfReceiver(alertManagerConfig, name);
    if (!name.equals(receiver.getName()) && alertManagerConfig.getReceivers().contains(receiver)) {
        throw new AlertManagerDuplicateEntryException("A receiver with the same name already exists.");
    }
    alertManagerConfig.getReceivers().remove(index);
    alertManagerConfig.getReceivers().add(receiver);
    return alertManagerConfig;
}
Also used : AlertManagerConfig(io.hops.hopsworks.alerting.config.dto.AlertManagerConfig) AlertManagerDuplicateEntryException(io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException)

Aggregations

AlertManagerDuplicateEntryException (io.hops.hopsworks.alerting.exceptions.AlertManagerDuplicateEntryException)15 AlertManagerUnreachableException (io.hops.hopsworks.alert.exception.AlertManagerUnreachableException)8 AlertManagerClientCreateException (io.hops.hopsworks.alerting.exceptions.AlertManagerClientCreateException)8 AlertManagerConfigCtrlCreateException (io.hops.hopsworks.alerting.exceptions.AlertManagerConfigCtrlCreateException)8 AlertManagerConfigReadException (io.hops.hopsworks.alerting.exceptions.AlertManagerConfigReadException)8 AlertManagerConfigUpdateException (io.hops.hopsworks.alerting.exceptions.AlertManagerConfigUpdateException)8 ResourceRequest (io.hops.hopsworks.common.api.ResourceRequest)8 AlertException (io.hops.hopsworks.exceptions.AlertException)8 JWTRequired (io.hops.hopsworks.jwt.annotation.JWTRequired)8 ApiOperation (io.swagger.annotations.ApiOperation)8 Consumes (javax.ws.rs.Consumes)8 Produces (javax.ws.rs.Produces)8 AlertManagerConfig (io.hops.hopsworks.alerting.config.dto.AlertManagerConfig)7 Receiver (io.hops.hopsworks.alerting.config.dto.Receiver)7 AlertManagerNoSuchElementException (io.hops.hopsworks.alerting.exceptions.AlertManagerNoSuchElementException)7 Route (io.hops.hopsworks.alerting.config.dto.Route)5 AlertManagerAccessControlException (io.hops.hopsworks.alert.exception.AlertManagerAccessControlException)4 AllowedProjectRoles (io.hops.hopsworks.api.filter.AllowedProjectRoles)4 POST (javax.ws.rs.POST)4 PUT (javax.ws.rs.PUT)4