use of com.epam.pipeline.entity.pipeline.Tool in project cloud-pipeline by epam.
the class DockerRegistryManager method buildTool.
private Tool buildTool(DockerRegistry dockerRegistry, ToolGroup toolGroup, String toolName, String actor) {
Tool tool = new Tool();
tool.setToolGroup(toolGroup.getName());
tool.setToolGroupId(toolGroup.getId());
tool.setImage(toolName);
tool.setCpu("0mi");
tool.setRam("0Gi");
tool.setRegistry(dockerRegistry.getPath());
tool.setRegistryId(dockerRegistry.getId());
tool.setOwner(actor);
return tool;
}
use of com.epam.pipeline.entity.pipeline.Tool in project cloud-pipeline by epam.
the class PipelineRunManager method resumeRun.
/**
* Resumes pipeline run for specified {@code runId}.
* @param runId {@link PipelineRun} id for pipeline run to be resumed
* @return resumed {@link PipelineRun}
*/
public PipelineRun resumeRun(Long runId) {
PipelineRun pipelineRun = pipelineRunDao.loadPipelineRun(runId);
verifyPipelineRunForPauseResume(pipelineRun, runId);
Assert.state(pipelineRun.getStatus() == TaskStatus.PAUSED, messageHelper.getMessage(MessageConstants.ERROR_PIPELINE_RUN_NOT_STOPPED, runId));
if (StringUtils.isEmpty(pipelineRun.getActualCmd())) {
throw new IllegalArgumentException(messageHelper.getMessage(MessageConstants.ERROR_ACTUAL_CMD_NOT_FOUND, runId));
}
Tool tool = toolManager.loadByNameOrId(pipelineRun.getDockerImage());
pipelineRun.setStatus(TaskStatus.RESUMING);
updatePipelineStatus(pipelineRun);
dockerContainerOperationManager.resumeRun(pipelineRun, tool.getEndpoints());
return pipelineRun;
}
use of com.epam.pipeline.entity.pipeline.Tool in project cloud-pipeline by epam.
the class PipelineRunManager method validateToolInstanceAndPriceTypes.
private void validateToolInstanceAndPriceTypes(final PipelineConfiguration configuration, final String instanceType, final PriceType priceType) {
final Tool tool = toolManager.loadByNameOrId(configuration.getDockerImage());
final ContextualPreferenceExternalResource toolResource = new ContextualPreferenceExternalResource(ContextualPreferenceLevel.TOOL, tool.getId().toString());
Assert.isTrue(!StringUtils.hasText(instanceType) || instanceOfferManager.isToolInstanceAllowed(instanceType, toolResource), messageHelper.getMessage(MessageConstants.ERROR_INSTANCE_TYPE_IS_NOT_ALLOWED, instanceType));
Assert.isTrue(instanceOfferManager.isPriceTypeAllowed(priceType.getLiteral(), toolResource), messageHelper.getMessage(MessageConstants.ERROR_PRICE_TYPE_IS_NOT_ALLOWED, priceType));
}
use of com.epam.pipeline.entity.pipeline.Tool in project cloud-pipeline by epam.
the class PipelineRunManager method runPod.
/**
* Creates a new pod with a given run_id, doesn't create a new pipeline run
* @param runVO
* @return
*/
// TODO: refactoring
@ToolSecurityPolicyCheck
@Transactional(propagation = Propagation.REQUIRED)
public PipelineRun runPod(PipelineStart runVO) {
Assert.notNull(runVO.getCmdTemplate(), messageHelper.getMessage(MessageConstants.SETTING_IS_NOT_PROVIDED, "cmd_template"));
PipelineRun parentRun = loadPipelineRun(runVO.getUseRunId());
Assert.state(parentRun.getStatus() == TaskStatus.RUNNING, messageHelper.getMessage(MessageConstants.ERROR_PIPELINE_RUN_NOT_RUNNING, runVO.getUseRunId()));
PipelineConfiguration configuration = configurationManager.getPipelineConfiguration(runVO);
Tool tool = getToolForRun(configuration);
configuration.setSecretName(tool.getSecretName());
List<String> endpoints = tool.getEndpoints();
PipelineRun run = new PipelineRun();
run.setInstance(parentRun.getInstance());
run.setId(runVO.getUseRunId());
run.setStartDate(DateUtils.now());
run.setStatus(TaskStatus.RUNNING);
run.setPipelineName(DEFAULT_PIPELINE_NAME);
run.setPodId(getRootPodIDFromTool(tool.getImage(), run.getId()));
run.setDockerImage(configuration.getDockerImage());
run.setCmdTemplate(determinateCmdTemplateForRun(configuration));
run.setTimeout(runVO.getTimeout());
run.setCommitStatus(CommitStatus.NOT_COMMITTED);
run.setLastChangeCommitTime(DateUtils.now());
run.setRunSids(runVO.getRunSids());
run.setOwner(parentRun.getOwner());
String launchedCommand = pipelineLauncher.launch(run, configuration, endpoints, runVO.getUseRunId().toString(), false, parentRun.getPodId(), null);
run.setActualCmd(launchedCommand);
return run;
}
use of com.epam.pipeline.entity.pipeline.Tool in project cloud-pipeline by epam.
the class PipelineVersionManager method mergeToolsRequirements.
private void mergeToolsRequirements(TaskGraphVO result) {
result.getTasks().forEach(task -> {
if (task.getTool() != null) {
Tool toolFromCode = task.getTool();
Tool tool = toolManager.loadTool(toolFromCode.getRegistry(), toolFromCode.getImage());
if (!StringUtils.isEmpty(toolFromCode.getCpu())) {
tool.setCpu(toolFromCode.getCpu());
}
if (!StringUtils.isEmpty(toolFromCode.getRam())) {
tool.setRam(toolFromCode.getRam());
}
task.setTool(tool);
}
});
}
Aggregations