use of org.alien4cloud.tosca.model.workflow.Workflow in project alien4cloud by alien4cloud.
the class DefaultWorkflowBuilder method addNode.
@Override
public void addNode(Workflow workflow, String nodeId, TopologyContext topologyContext, boolean isCompute) {
if (WorkflowUtils.isNativeOrSubstitutionNode(nodeId, topologyContext)) {
// for a native node, we just add a sub-workflow step
WorkflowUtils.addDelegateWorkflowStep(workflow, nodeId);
} else {
NodeDeclarativeWorkflow nodeDeclarativeWorkflow = defaultDeclarativeWorkflows.getNodeWorkflows().get(workflow.getName());
// only trigger this method if it's a default workflow
if (nodeDeclarativeWorkflow != null) {
// Create all the states of the workflow at first
Map<String, WorkflowStep> statesSteps = safe(nodeDeclarativeWorkflow.getStates()).entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, stateEntry -> WorkflowUtils.addStateStep(workflow, nodeId, stateEntry.getKey())));
// Create all the operations of the workflow at first
Map<String, WorkflowStep> operationSteps = safe(nodeDeclarativeWorkflow.getOperations()).entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, operationEntry -> WorkflowUtils.addOperationStep(workflow, nodeId, ToscaNodeLifecycleConstants.STANDARD_SHORT, operationEntry.getKey())));
Steps steps = new Steps(operationSteps, statesSteps, null);
// Declare dependencies on the states steps
safe(nodeDeclarativeWorkflow.getStates()).forEach((stateName, stateDependencies) -> declareStepDependencies(stateDependencies, steps.getStateStep(stateName), steps));
// Declare dependencies on the operation steps
safe(nodeDeclarativeWorkflow.getOperations()).forEach((operationName, operationDependencies) -> declareStepDependencies(operationDependencies, steps.getOperationStep(operationName), steps));
}
}
}
use of org.alien4cloud.tosca.model.workflow.Workflow in project alien4cloud by alien4cloud.
the class WorkflowUtils method cloneWorkflow.
public static Workflow cloneWorkflow(Workflow workflow) {
Workflow cloned = new Workflow();
cloned.setName(workflow.getName());
cloned.setDescription(workflow.getDescription());
cloned.setMetadata(workflow.getMetadata());
cloned.setInputs(workflow.getInputs());
cloned.setPreconditions(workflow.getPreconditions());
cloned.setSteps(safe(workflow.getSteps()).entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> cloneStep(entry.getValue()))));
cloned.setHasCustomModifications(workflow.isHasCustomModifications());
cloned.setStandard(workflow.isStandard());
cloned.setHosts(workflow.getHosts());
cloned.setErrors(workflow.getErrors());
return cloned;
}
use of org.alien4cloud.tosca.model.workflow.Workflow in project alien4cloud by alien4cloud.
the class WorkflowsBuilderService method connectStepTo.
public Workflow connectStepTo(Topology topology, Csar csar, String workflowName, String stepId, String[] stepNames) {
TopologyContext topologyContext = buildTopologyContext(topology, csar);
Workflow wf = topology.getWorkflows().get(workflowName);
if (wf == null) {
throw new NotFoundException(String.format("The workflow '%s' can not be found", workflowName));
}
AbstractWorkflowBuilder builder = getWorkflowBuilder(topologyContext.getDSLVersion(), wf);
builder.connectStepTo(wf, stepId, stepNames);
workflowValidator.validate(topologyContext, wf);
return wf;
}
use of org.alien4cloud.tosca.model.workflow.Workflow in project alien4cloud by alien4cloud.
the class WorkflowsBuilderService method reinitWorkflow.
public void reinitWorkflow(String workflowName, TopologyContext topologyContext, boolean simplify) {
Workflow wf = topologyContext.getTopology().getWorkflows().get(workflowName);
if (wf == null) {
throw new NotFoundException(String.format("The workflow '%s' can not be found", workflowName));
}
if (!wf.isStandard()) {
throw new BadWorkflowOperationException(String.format("Reinit can not be performed on non standard workflow '%s'", workflowName));
}
AbstractWorkflowBuilder builder = getWorkflowBuilder(topologyContext.getDSLVersion(), wf);
wf = builder.reinit(wf, topologyContext);
WorkflowUtils.fillHostId(wf, topologyContext);
if (simplify) {
postProcessTopologyWorkflows(topologyContext);
}
}
use of org.alien4cloud.tosca.model.workflow.Workflow in project alien4cloud by alien4cloud.
the class WorkflowsBuilderService method renameStep.
public void renameStep(Topology topology, Csar csar, String workflowName, String stepId, String newStepName) {
TopologyContext topologyContext = buildTopologyContext(topology, csar);
Workflow wf = topology.getWorkflows().get(workflowName);
if (wf == null) {
throw new NotFoundException(String.format("The workflow '%s' can not be found", workflowName));
}
AbstractWorkflowBuilder builder = getWorkflowBuilder(topologyContext.getDSLVersion(), wf);
builder.renameStep(wf, stepId, newStepName);
if (log.isDebugEnabled()) {
log.debug(WorkflowUtils.debugWorkflow(wf));
}
}
Aggregations