Search in sources :

Example 41 with Tool

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;
}
Also used : Tool(com.epam.pipeline.entity.pipeline.Tool)

Example 42 with 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;
}
Also used : PipelineRun(com.epam.pipeline.entity.pipeline.PipelineRun) Tool(com.epam.pipeline.entity.pipeline.Tool)

Example 43 with Tool

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));
}
Also used : ContextualPreferenceExternalResource(com.epam.pipeline.entity.contextual.ContextualPreferenceExternalResource) Tool(com.epam.pipeline.entity.pipeline.Tool)

Example 44 with Tool

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;
}
Also used : PipelineRun(com.epam.pipeline.entity.pipeline.PipelineRun) PipelineConfiguration(com.epam.pipeline.entity.configuration.PipelineConfiguration) Tool(com.epam.pipeline.entity.pipeline.Tool) ToolSecurityPolicyCheck(com.epam.pipeline.manager.docker.scan.ToolSecurityPolicyCheck) Transactional(org.springframework.transaction.annotation.Transactional)

Example 45 with Tool

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);
        }
    });
}
Also used : Tool(com.epam.pipeline.entity.pipeline.Tool)

Aggregations

Tool (com.epam.pipeline.entity.pipeline.Tool)72 Transactional (org.springframework.transaction.annotation.Transactional)28 DockerRegistry (com.epam.pipeline.entity.pipeline.DockerRegistry)24 Test (org.junit.Test)22 ToolGroup (com.epam.pipeline.entity.pipeline.ToolGroup)14 AbstractManagerTest (com.epam.pipeline.manager.AbstractManagerTest)11 AbstractSpringTest (com.epam.pipeline.AbstractSpringTest)9 DockerClient (com.epam.pipeline.manager.docker.DockerClient)9 List (java.util.List)9 PipelineConfiguration (com.epam.pipeline.entity.configuration.PipelineConfiguration)8 MessageHelper (com.epam.pipeline.common.MessageHelper)7 PipelineRun (com.epam.pipeline.entity.pipeline.PipelineRun)7 ToolVersionScanResult (com.epam.pipeline.entity.scan.ToolVersionScanResult)7 ToolScanExternalServiceException (com.epam.pipeline.exception.ToolScanExternalServiceException)7 DockerRegistryManager (com.epam.pipeline.manager.docker.DockerRegistryManager)7 Optional (java.util.Optional)7 MessageConstants (com.epam.pipeline.common.MessageConstants)6 ManifestV2 (com.epam.pipeline.entity.docker.ManifestV2)6 ToolScanStatus (com.epam.pipeline.entity.pipeline.ToolScanStatus)6 DockerClientFactory (com.epam.pipeline.manager.docker.DockerClientFactory)6