public PipelineModel(String pipelineName, boolean canForce, boolean canOperate, PipelinePauseInfo pipelinePauseInfo) { this.pipelineName = pipelineName; this.canForce = canForce; this.pipelinePauseInfo = pipelinePauseInfo; this.canOperate = canOperate; activePipelineInstances = PipelineInstanceModels.createPipelineInstanceModels(); }
public PipelineInstanceGroupModel(StageConfigurationModels stages) { this.stages = stages; pipelineInstances = PipelineInstanceModels.createPipelineInstanceModels(); }
private PipelineInstanceModels dependentPipelines(PipelineInstanceModel upstreamPipeline, List<PipelineInstanceModel> instanceModels) { instanceModels.remove(upstreamPipeline); return PipelineInstanceModels.createPipelineInstanceModels(instanceModels); }
public void reset() { historyForDashboard = PipelineInstanceModels.createPipelineInstanceModels(); lastKnownPipelineNames = new HashSet<>(); }
public PipelineInstanceModels findAll(String pipelineName) { PipelineInstanceModels found = PipelineInstanceModels.createPipelineInstanceModels(); for (PipelineInstanceModel pipelineInstanceModel : this) { if(pipelineInstanceModel.getName().equalsIgnoreCase(pipelineName)){ found.add(pipelineInstanceModel); } } return found; }
private PipelineInstanceModels loadHistoryForDashboard(String pipelineName) { if (isBlank(pipelineName)) { return PipelineInstanceModels.createPipelineInstanceModels(); } Map<String, Object> args = arguments("pipelineName", pipelineName).asMap(); List<PipelineInstanceModel> resultSet = getSqlMapClientTemplate().queryForList("getPipelineForDashboard", args); return PipelineInstanceModels.createPipelineInstanceModels(resultSet); }
@Override public PipelineInstanceModels loadHistoryForDashboard(List<String> pipelineNames) { if (pipelineNames == null || pipelineNames.isEmpty()) { return PipelineInstanceModels.createPipelineInstanceModels(); } // this is done to pick up an SQL query optimized for a single pipeline (no IN clause) if (pipelineNames.size() == 1) { return loadHistoryForDashboard(pipelineNames.get(0)); } Map<String, Object> args = arguments("pipelineNames", SqlUtil.joinWithQuotesForSql(pipelineNames.toArray())).asMap(); List<PipelineInstanceModel> resultSet = getSqlMapClientTemplate().queryForList("getPipelinesForDashboard", args); return PipelineInstanceModels.createPipelineInstanceModels(resultSet); }
public PipelineInstanceModels loadHistory(String pipelineName, int limit, int offset) { List<Long> ids = findPipelineIds(pipelineName, limit, offset); if (ids.size() == 1) { return PipelineInstanceModels.createPipelineInstanceModels(loadHistoryByIdWithBuildCause(ids.get(0))); } return loadHistory(pipelineName, ids); }
private PipelineInstanceModels loadHistory(String pipelineName, List<Long> ids) { if (ids.isEmpty()) { return PipelineInstanceModels.createPipelineInstanceModels(); } Map<String, Object> args = arguments("pipelineName", pipelineName) .and("from", Collections.min(ids)) .and("to", Collections.max(ids)).asMap(); PipelineInstanceModels history = PipelineInstanceModels.createPipelineInstanceModels( (List<PipelineInstanceModel>) getSqlMapClientTemplate().queryForList("getPipelineHistoryByName", args)); for (PipelineInstanceModel pipelineInstanceModel : history) { loadPipelineHistoryBuildCause(pipelineInstanceModel); } return history; }
private PipelineInstanceModels filterPermissions(PipelineInstanceModels pipelineInstanceModels, Username username) { PipelineInstanceModels newModels = PipelineInstanceModels.createPipelineInstanceModels(); for (PipelineInstanceModel pipelineInstanceModel : pipelineInstanceModels) { if (securityService.hasViewPermissionForPipeline(username, pipelineInstanceModel.getName())) { newModels.add(pipelineInstanceModel); } } return newModels; }
public PipelineInstanceModels findMatchingPipelineInstances(String pipelineName, String pattern, int limit) { Map<String, Object> args = arguments("pipelineName", pipelineName). and("pattern", "%" + pattern.toLowerCase() + "%"). and("rawPattern", pattern.toLowerCase()). and("limit", limit).asMap(); long begin = System.currentTimeMillis(); List<PipelineInstanceModel> matchingPIMs = (List<PipelineInstanceModel>) getSqlMapClientTemplate().queryForList("findMatchingPipelineInstances", args); List<PipelineInstanceModel> exactMatchingPims = (List<PipelineInstanceModel>) getSqlMapClientTemplate().queryForList("findExactMatchingPipelineInstances", args); LOGGER.debug("[Compare Pipelines] Query initiated for pipeline {} with pattern {}. Query execution took {} milliseconds", pipelineName, pattern, System.currentTimeMillis() - begin); exactMatchingPims.addAll(matchingPIMs); return PipelineInstanceModels.createPipelineInstanceModels(exactMatchingPims); }
public PipelineInstanceModels loadHistory(String pipelineName) { return PipelineInstanceModels.createPipelineInstanceModels( (List<PipelineInstanceModel>) getSqlMapClientTemplate().queryForList("getAllPipelineHistoryByName", arguments("name", pipelineName).asMap())); }
private PipelineInstanceModels findPIMsWithFallbacks(PipelineConfig pipelineConfig, PipelineInstanceModels historyForDashboard) { String pipelineName = str(pipelineConfig.name()); PipelineInstanceModels pipelinesToShow = historyForDashboard.findAll(pipelineName); if (!pipelinesToShow.isEmpty()) { return pipelinesToShow; } if (triggerMonitor.isAlreadyTriggered(pipelineConfig.name())) { return createPipelineInstanceModels(createPreparingToSchedule(pipelineName, new StageInstanceModels())); } return createPipelineInstanceModels(createEmptyPipelineInstanceModel(pipelineName, createWithEmptyModifications(), new StageInstanceModels())); }
public PipelineInstanceModels latestInstancesForConfiguredPipelines(Username username) { PipelineInstanceModels pipelineInstances = PipelineInstanceModels.createPipelineInstanceModels(); for (PipelineConfigs group : goConfigService.currentCruiseConfig().getGroups()) { for (PipelineConfig pipelineConfig : group) { PipelineInstanceModel pipelineInstanceModel = latest(CaseInsensitiveString.str(pipelineConfig.name()), username); if (pipelineInstanceModel != null) { pipelineInstances.add(pipelineInstanceModel); } } } return pipelineInstances; }
public PipelineInstanceModels loadWithEmptyAsDefault(String pipelineName, Pagination pagination, String userName) { if (!securityService.hasViewPermissionForPipeline(new Username(new CaseInsensitiveString(userName)), pipelineName)) { return PipelineInstanceModels.createPipelineInstanceModels(); } PipelineInstanceModels pipelineInstanceModels = null; if (triggerMonitor.isAlreadyTriggered(new CaseInsensitiveString(pipelineName))) { StageInstanceModels stageHistory = new StageInstanceModels(); appendFollowingStagesFromConfig(pipelineName, stageHistory); PipelineInstanceModel model = PipelineInstanceModel.createPreparingToSchedule(pipelineName, stageHistory); model.setCanRun(false); pipelineInstanceModels = PipelineInstanceModels.createPipelineInstanceModels(model); } else { pipelineInstanceModels = load(pipelineName, pagination, userName, true); } return pipelineInstanceModels; }
public PipelineInstanceModels findMatchingPipelineInstances(String pipelineName, String pattern, int limit, Username userName, HttpLocalizedOperationResult result) { pattern = escapeWildCardsAndTrim(pattern.trim()); if (!securityService.hasViewPermissionForPipeline(userName, pipelineName)) { result.forbidden(LocalizedMessage.forbiddenToViewPipeline(pipelineName), HealthStateType.general(HealthStateScope.forPipeline(pipelineName))); return PipelineInstanceModels.createPipelineInstanceModels(); } PipelineInstanceModels models = pipelineDao.findMatchingPipelineInstances(pipelineName, pattern, limitForPipeline(pipelineName, limit)); for (PipelineInstanceModel model : models) { populatePlaceHolderStages(model); populateMaterialRevisionsOnBuildCause(model); } return models; }
@Test public void shouldFilterPIMS() throws Exception { PipelineDependencyGraphOld graph = new PipelineDependencyGraphOld(pim("upstream"), PipelineInstanceModels.createPipelineInstanceModels(pim("pavan"), pim("raghu"))); PipelineDependencyGraphOld.Filterer filterer = mock(PipelineDependencyGraphOld.Filterer.class); when(filterer.filterPipeline("raghu")).thenReturn(false); when(filterer.filterPipeline("pavan")).thenReturn(true); graph.filterDependencies(filterer); PipelineInstanceModels models = graph.dependencies(); assertThat(models.size(), is(1)); assertThat(models.get(0).getName(), is("pavan")); }
@Test public void shouldShouldbeAbleToTellIfUpStreamMaterialIsAvailableForTrigger() throws Exception { StageInstanceModels stages = new StageInstanceModels(); stages.add(new StageInstanceModel("stage-0","21", StageResult.Cancelled, new StageIdentifier("blahUpStream",23,"stage-0","21"))); PipelineInstanceModel upStream = PipelineHistoryMother.singlePipeline("blahUpStream", stages); PipelineInstanceModel down1 = pim("blahDown1"); down1.setMaterialConfigs(new MaterialConfigs(dependencyMaterialConfig("blahUpStream", "stage-1"))); PipelineDependencyGraphOld graph = new PipelineDependencyGraphOld(upStream, PipelineInstanceModels.createPipelineInstanceModels(down1)); assertThat(graph.hasUpStreamRevisionFor(down1),is(false)); }
private void assertThatTriggerIsPossibleOnlyIfUpStreamPassed(StageResult upstreamResult) { StageInstanceModels stages = new StageInstanceModels(); stages.add(new StageInstanceModel("stage-0","21", upstreamResult, new StageIdentifier("blahUpStream",23,"stage-0","21"))); PipelineInstanceModel upStream = PipelineHistoryMother.singlePipeline("blahUpStream", stages); PipelineInstanceModel down1 = pim("blahDown1"); down1.setMaterialConfigs(new MaterialConfigs(dependencyMaterialConfig("blahUpStream", "stage-0"))); PipelineDependencyGraphOld graph = new PipelineDependencyGraphOld(upStream, PipelineInstanceModels.createPipelineInstanceModels(down1)); assertThat(graph.hasUpStreamRevisionFor(graph.dependencies().find("blahDown1")),is(upstreamResult== StageResult.Passed)); }
@Test public void shouldProvideMaterialRevisionForAGivenDownStreamPipeline() throws Exception { StageInstanceModels stages = new StageInstanceModels(); stages.add(new StageInstanceModel("stage-0","21", StageResult.Cancelled, new StageIdentifier("blahUpStream",23,"stage-0","21"))); stages.add(new StageInstanceModel("stage-1","2", StageResult.Cancelled, new StageIdentifier("blahUpStream",23,"stage-1","2"))); PipelineInstanceModel upStream = PipelineHistoryMother.singlePipeline("blahUpStream", stages); PipelineInstanceModel down1 = pim("blahDown1"); down1.setMaterialConfigs(new MaterialConfigs(dependencyMaterialConfig("blahUpStream", "stage-0"))); PipelineInstanceModel down2 = pim("blahDown2"); down2.setMaterialConfigs(new MaterialConfigs(dependencyMaterialConfig("blahUpStream", "stage-1"))); PipelineDependencyGraphOld graph = new PipelineDependencyGraphOld(upStream, PipelineInstanceModels.createPipelineInstanceModels(down1,down2)); assertThat(graph.dependencyRevisionFor(down1),is("blahUpStream/23/stage-0/21")); assertThat(graph.dependencyRevisionFor(down2),is("blahUpStream/23/stage-1/2")); }