use of com.emc.storageos.db.client.model.WorkflowStep in project coprhd-controller by CoprHD.
the class WorkflowService method getStep.
/**
* Returns a single WorkflowStep.
*
* @param stepId
* @brief Show workflow step
* @return Single WorkflowStep
*/
@GET
@Path("/steps/{stepid}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@CheckPermission(roles = { Role.SYSTEM_ADMIN, Role.RESTRICTED_SYSTEM_ADMIN, Role.SYSTEM_MONITOR, Role.TENANT_ADMIN })
public WorkflowStepRestRep getStep(@PathParam("stepid") URI stepId) {
ArgValidator.checkFieldUriType(stepId, WorkflowStep.class, "stepid");
WorkflowStep step = _dbClient.queryObject(WorkflowStep.class, stepId);
ArgValidator.checkEntityNotNull(step, stepId, isIdEmbeddedInURL(stepId));
Workflow workflow = queryResource(step.getWorkflowId());
if (userIsOnlyTenantAdmin()) {
// User is only tenant admin so only return workflow steps for that tenant.
if (!isTopLevelWorkflowForUserTenant(getTopLevelWorkflow(workflow))) {
throw APIException.badRequests.userNotAuthorizedForWorkflowStep();
}
}
return map(step, getChildWorkflows(step));
}
use of com.emc.storageos.db.client.model.WorkflowStep in project coprhd-controller by CoprHD.
the class WorkflowService method getStepList.
/**
* Gets a list of all the steps in a particular workflow.
*
* @param id the URN of a ViPR workflow
* @brief List workflow steps
* @return List of steps of a workflow
*/
@GET
@Path("/{id}/steps")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@CheckPermission(roles = { Role.SYSTEM_ADMIN, Role.RESTRICTED_SYSTEM_ADMIN, Role.SYSTEM_MONITOR, Role.TENANT_ADMIN })
public StepList getStepList(@PathParam("id") URI id) {
ArgValidator.checkFieldUriType(id, Workflow.class, "id");
Workflow workflow = queryResource(id);
if (userIsOnlyTenantAdmin()) {
// User is only tenant admin so only return steps for workflows for that tenant.
if (!isTopLevelWorkflowForUserTenant(getTopLevelWorkflow(workflow))) {
throw APIException.badRequests.userNotAuthorizedForWorkflow();
}
}
StepList list = new StepList();
URIQueryResultList stepURIs = new URIQueryResultList();
_dbClient.queryByConstraint(ContainmentConstraint.Factory.getWorkflowWorkflowStepConstraint(id), stepURIs);
Iterator<URI> iter = stepURIs.iterator();
while (iter.hasNext()) {
URI workflowStepURI = iter.next();
WorkflowStep step = _dbClient.queryObject(WorkflowStep.class, workflowStepURI);
list.getSteps().add(map(step, getChildWorkflows(step)));
}
return list;
}
use of com.emc.storageos.db.client.model.WorkflowStep in project coprhd-controller by CoprHD.
the class WorkflowService method suspendWorkflowStep.
/**
* Suspends a workflow when it tries to execute a given step, and all other executing steps
* have suspended.
* @preq none
* @brief Suspends a workflow
* @param uri - URI of the workflow.
* @param stepURI - URI of the workflow step
* @return - No data returned in response body
*/
@PUT
@Path("/{id}/suspend/{stepId}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@CheckPermission(roles = { Role.SYSTEM_ADMIN, Role.RESTRICTED_SYSTEM_ADMIN, Role.SYSTEM_MONITOR, Role.TENANT_ADMIN })
public Response suspendWorkflowStep(@PathParam("id") URI uri, @PathParam("stepId") URI stepURI) {
Workflow workflow = queryResource(uri);
if (userIsOnlyTenantAdmin()) {
// User is only tenant admin so only allow rollback on workflows for that tenant.
if (!isTopLevelWorkflowForUserTenant(getTopLevelWorkflow(workflow))) {
throw APIException.badRequests.userNotAuthorizedForWorkflow();
}
}
// Verify the workflow is either RUNNING or ROLLING_BACK
EnumSet<WorkflowState> expected = EnumSet.of(WorkflowState.RUNNING, WorkflowState.ROLLING_BACK);
if (workflow.getCompletionState() == null) {
throw APIException.badRequests.workflowCompletionStateNotFound(workflow.getId());
}
WorkflowState completionState = WorkflowState.valueOf(workflow.getCompletionState());
ArgValidator.checkFieldForValueFromEnum(completionState, "Workflow State", expected);
if (!NullColumnValueGetter.isNullURI(stepURI)) {
// Validate step id.
WorkflowStep step = _dbClient.queryObject(WorkflowStep.class, stepURI);
ArgValidator.checkEntityNotNull(step, stepURI, isIdEmbeddedInURL(stepURI));
}
String taskId = UUID.randomUUID().toString();
getController().suspendWorkflowStep(uri, stepURI, taskId);
return Response.ok().build();
}
Aggregations