package alien4cloud.paas.wf.validation;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.common.collect.Lists;
import org.alien4cloud.tosca.model.templates.NodeTemplate;
import alien4cloud.paas.wf.AbstractStep;
import alien4cloud.paas.wf.NodeActivityStep;
import alien4cloud.paas.wf.Workflow;
import alien4cloud.paas.wf.WorkflowsBuilderService.TopologyContext;
import alien4cloud.paas.wf.exception.WorkflowException;
/**
*/
@Slf4j
public class NodeValidation implements Rule {
@Override
public List<AbstractWorkflowError> validate(TopologyContext topologyContext, Workflow workflow) throws WorkflowException {
if (workflow.getSteps() == null || workflow.getSteps().isEmpty()) {
return null;
}
List<AbstractWorkflowError> errors = Lists.newArrayList();
for (AbstractStep step : workflow.getSteps().values()) {
if (step instanceof NodeActivityStep) {
String nodeId = ((NodeActivityStep) step).getNodeId();
NodeTemplate nodeTemplate = null;
if (topologyContext.getTopology().getNodeTemplates() != null) {
nodeTemplate = topologyContext.getTopology().getNodeTemplates().get(nodeId);
}
if (nodeTemplate == null) {
errors.add(new UnknownNodeError(step.getName(), nodeId));
} else {
// TODO: here we should check interface & operation
}
}
}
return errors;
}
}