use of com.hubspot.singularity.SingularityDeployMarker in project Singularity by HubSpot.
the class DeployResource method cancelDeploy.
@DELETE
@Path("/deploy/{deployId}/request/{requestId}")
@ApiOperation(value = "Cancel a pending deployment (best effort - the deploy may still succeed or fail)", response = SingularityRequestParent.class)
@ApiResponses({ @ApiResponse(code = 400, message = "Deploy is not in the pending state pending or is not not present") })
public SingularityRequestParent cancelDeploy(@Auth SingularityUser user, @ApiParam(required = true, value = "The Singularity Request Id from which the deployment is removed.") @PathParam("requestId") String requestId, @ApiParam(required = true, value = "The Singularity Deploy Id that should be removed.") @PathParam("deployId") String deployId) {
SingularityRequestWithState requestWithState = fetchRequestWithState(requestId, user);
authorizationHelper.checkForAuthorization(requestWithState.getRequest(), user, SingularityAuthorizationScope.WRITE);
validator.checkActionEnabled(SingularityAction.CANCEL_DEPLOY);
Optional<SingularityRequestDeployState> deployState = deployManager.getRequestDeployState(requestWithState.getRequest().getId());
checkBadRequest(deployState.isPresent() && deployState.get().getPendingDeploy().isPresent() && deployState.get().getPendingDeploy().get().getDeployId().equals(deployId), "Request %s does not have a pending deploy %s", requestId, deployId);
deployManager.createCancelDeployRequest(new SingularityDeployMarker(requestId, deployId, System.currentTimeMillis(), user.getEmail(), Optional.<String>absent()));
return fillEntireRequest(requestWithState);
}
Aggregations