Search in sources :

Example 1 with NodeDeclarativeWorkflow

use of org.alien4cloud.tosca.model.workflow.declarative.NodeDeclarativeWorkflow 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));
        }
    }
}
Also used : ToscaNodeLifecycleConstants(alien4cloud.paas.plan.ToscaNodeLifecycleConstants) RelationshipWeavingDeclarativeWorkflow(org.alien4cloud.tosca.model.workflow.declarative.RelationshipWeavingDeclarativeWorkflow) OperationDeclarativeWorkflow(org.alien4cloud.tosca.model.workflow.declarative.OperationDeclarativeWorkflow) ToscaRelationshipLifecycleConstants(alien4cloud.paas.plan.ToscaRelationshipLifecycleConstants) Workflow(org.alien4cloud.tosca.model.workflow.Workflow) Collectors(java.util.stream.Collectors) StringUtils(org.apache.commons.lang3.StringUtils) AlienUtils.safe(alien4cloud.utils.AlienUtils.safe) ArrayList(java.util.ArrayList) DefaultDeclarativeWorkflows(org.alien4cloud.tosca.model.workflow.declarative.DefaultDeclarativeWorkflows) List(java.util.List) RelationshipDeclarativeWorkflow(org.alien4cloud.tosca.model.workflow.declarative.RelationshipDeclarativeWorkflow) NodeDeclarativeWorkflow(org.alien4cloud.tosca.model.workflow.declarative.NodeDeclarativeWorkflow) Map(java.util.Map) NodeTemplate(org.alien4cloud.tosca.model.templates.NodeTemplate) RelationshipWeaving(org.alien4cloud.tosca.model.workflow.declarative.RelationshipWeaving) RelationshipOperationHost(org.alien4cloud.tosca.model.workflow.declarative.RelationshipOperationHost) WorkflowStep(org.alien4cloud.tosca.model.workflow.WorkflowStep) Steps(alien4cloud.paas.wf.util.Steps) Collections(java.util.Collections) RelationshipTemplate(org.alien4cloud.tosca.model.templates.RelationshipTemplate) WorkflowUtils(alien4cloud.paas.wf.util.WorkflowUtils) RelationshipType(org.alien4cloud.tosca.model.types.RelationshipType) Steps(alien4cloud.paas.wf.util.Steps) NodeDeclarativeWorkflow(org.alien4cloud.tosca.model.workflow.declarative.NodeDeclarativeWorkflow) WorkflowStep(org.alien4cloud.tosca.model.workflow.WorkflowStep) Map(java.util.Map)

Aggregations

ToscaNodeLifecycleConstants (alien4cloud.paas.plan.ToscaNodeLifecycleConstants)1 ToscaRelationshipLifecycleConstants (alien4cloud.paas.plan.ToscaRelationshipLifecycleConstants)1 Steps (alien4cloud.paas.wf.util.Steps)1 WorkflowUtils (alien4cloud.paas.wf.util.WorkflowUtils)1 AlienUtils.safe (alien4cloud.utils.AlienUtils.safe)1 ArrayList (java.util.ArrayList)1 Collections (java.util.Collections)1 List (java.util.List)1 Map (java.util.Map)1 Collectors (java.util.stream.Collectors)1 NodeTemplate (org.alien4cloud.tosca.model.templates.NodeTemplate)1 RelationshipTemplate (org.alien4cloud.tosca.model.templates.RelationshipTemplate)1 RelationshipType (org.alien4cloud.tosca.model.types.RelationshipType)1 Workflow (org.alien4cloud.tosca.model.workflow.Workflow)1 WorkflowStep (org.alien4cloud.tosca.model.workflow.WorkflowStep)1 DefaultDeclarativeWorkflows (org.alien4cloud.tosca.model.workflow.declarative.DefaultDeclarativeWorkflows)1 NodeDeclarativeWorkflow (org.alien4cloud.tosca.model.workflow.declarative.NodeDeclarativeWorkflow)1 OperationDeclarativeWorkflow (org.alien4cloud.tosca.model.workflow.declarative.OperationDeclarativeWorkflow)1 RelationshipDeclarativeWorkflow (org.alien4cloud.tosca.model.workflow.declarative.RelationshipDeclarativeWorkflow)1 RelationshipOperationHost (org.alien4cloud.tosca.model.workflow.declarative.RelationshipOperationHost)1