public Map<String, TreeSet<PipelineInstanceModel>> groupedDependencies(){ Map<String, TreeSet<PipelineInstanceModel>> pipelineInstanceModelses = new LinkedHashMap<>(); for (PipelineInstanceModel dependency : dependencies) { if (!pipelineInstanceModelses.containsKey(dependency.getName())) { pipelineInstanceModelses.put(dependency.getName(), new TreeSet<>((me, her) -> her.getCounter().compareTo(me.getCounter()))); } pipelineInstanceModelses.get(dependency.getName()).add(dependency); } return pipelineInstanceModelses; }
public PipelineInstanceModels findAll(String pipelineName) { PipelineInstanceModels found = PipelineInstanceModels.createPipelineInstanceModels(); for (PipelineInstanceModel pipelineInstanceModel : this) { if(pipelineInstanceModel.getName().equalsIgnoreCase(pipelineName)){ found.add(pipelineInstanceModel); } } return found; }
public void filterDependencies(Filterer filterer) { for (Iterator it = dependencies().iterator(); it.hasNext();) { PipelineInstanceModel pipelineInstanceModel = (PipelineInstanceModel) it.next(); if (!filterer.filterPipeline(pipelineInstanceModel.getName())) { it.remove(); } } } }
private void populatePlaceHolderStages(PipelineInstanceModel pipeline) { StageInstanceModels stageHistory = pipeline.getStageHistory(); String pipelineName = pipeline.getName(); appendFollowingStagesFromConfig(pipelineName, stageHistory); }
private Map<CaseInsensitiveString, TreeSet<Long>> groupPipelineInstanceIdsByPipelineName(List<PipelineInstanceModel> pipelines) { Map<CaseInsensitiveString, TreeSet<Long>> result = new HashMap<CaseInsensitiveString, TreeSet<Long>>(); for (PipelineInstanceModel pipeline : pipelines) { TreeSet<Long> ids = initializePipelineInstances(result, new CaseInsensitiveString(pipeline.getName())); ids.add(pipeline.getId()); } return result; }
private void populatePipelineCanRunStatus(Username username, PipelineInstanceModel pipelineInstanceModel) { boolean canPipelineRun = schedulingCheckerService.canManuallyTrigger(pipelineInstanceModel.getName(), username); pipelineInstanceModel.setCanRun(canPipelineRun); }
public void addPipelineInstance(String groupName, PipelineInstanceModel pipelineInstanceModel, boolean canForce, boolean canOperate, PipelinePauseInfo pipelinePauseInfo) { PipelineModel pipelineModel = pipelineModelForPipelineName(groupName, pipelineInstanceModel.getName(), canForce, canOperate, pipelinePauseInfo); pipelineModel.addPipelineInstance(pipelineInstanceModel); }
public void clearEntryFor(CaseInsensitiveString pipeline) { lastKnownPipelineNames.remove(pipeline); historyForDashboard.removeIf(pipelineInstanceModel -> pipeline.equals(new CaseInsensitiveString(pipelineInstanceModel.getName()))); } }
public Revision getCurrentRevision(String requestedMaterialName) { for (MaterialRevision materialRevision : getCurrentRevisions()) { String materialName = CaseInsensitiveString.str(materialRevision.getMaterial().getName()); if(materialName != null && materialName.equals(requestedMaterialName)) { return materialRevision.getRevision(); } } throw new RuntimeException("material not known for pipeline " + getName()); }
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; }
private static Consumer<OutputLinkWriter> addLinks(PipelineInstanceModel model) { return linkWriter -> linkWriter.addLink("self", Routes.Pipeline.instance(model.getName(), model.getCounter())); }
private static Consumer<OutputListWriter> getStages(PipelineInstanceModel model) { return writer -> { model.getStageHistory().forEach(stage -> { writer.addChild(childWriter -> { StageRepresenter.toJSON(childWriter, stage, model.getName(), String.valueOf(model.getCounter())); }); }); }; } }
private static Consumer<OutputListWriter> getStages(PipelineInstanceModel model) { return writer -> { model.getStageHistory().forEach(stage -> { writer.addChild(childWriter -> { StageRepresenter.toJSON(childWriter, stage, model.getName(), String.valueOf(model.getCounter())); }); }); }; } }
private void populateStageOperatePermission(PipelineInstanceModel pipelineInstanceModel, Username username) { for (StageInstanceModel stage : pipelineInstanceModel.getStageHistory()) { stage.setOperatePermission(securityService.hasOperatePermissionForStage(pipelineInstanceModel.getName(), stage.getName(), CaseInsensitiveString.str(username.getUsername()))); } }
private void populateDownstreamPipelineState(Username username, PipelineInstanceModel pipelineInstanceModel) { populatePlaceHolderStages(pipelineInstanceModel); populatePipelineCanRunStatus(username, pipelineInstanceModel); populateCanRunStatus(username, pipelineInstanceModel); populateStageOperatePermission(pipelineInstanceModel, username); pipelineInstanceModel.setMaterialConfigs(goConfigService.materialConfigsFor(new CaseInsensitiveString(pipelineInstanceModel.getName()))); }
@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")); }
private void populatePipelineState(PipelineInstanceModel instance, Username username) { populatePlaceHolderStages(instance); populateCanRunStatus(username, instance); populateStageOperatePermission(instance, username); populateLockStatus(instance.getName(), username, instance); long id = pipelineTimeline.pipelineBefore(instance.getId()); if (id != -1) { PipelineInstanceModel prevPipeline = pipelineDao.loadHistory(id); instance.setPreviousPipelineLabel(prevPipeline.getLabel()); instance.setPreviousPipelineCounter(prevPipeline.getCounter()); } }
@Test public void shouldNotBeAbleToscheduleIfTheLatestPipelineIsPreparingToSchedule() throws Exception { PipelineInstanceModel instanceModel = PipelineInstanceModel.createPreparingToSchedule("pipelineName", new StageInstanceModels()); PipelineModel pipelineModel = new PipelineModel(instanceModel.getName(), true, true, PipelinePauseInfo.notPaused()); pipelineModel.addPipelineInstance(instanceModel); assertThat(pipelineModel.canForce(), is(false)); }
private void populatePipelineInstanceModel(PipelineConfig pipelineConfig, PipelineInstanceModel pipelineInstanceModel) { if (pipelineInstanceModel.getId() > 0) { CaseInsensitiveString pipelineName = new CaseInsensitiveString(pipelineInstanceModel.getName()); pipelineInstanceModel.setPipelineAfter(pipelineTimeline.runAfter(pipelineInstanceModel.getId(), pipelineName)); pipelineInstanceModel.setPipelineBefore(pipelineTimeline.runBefore(pipelineInstanceModel.getId(), pipelineName)); } populatePlaceHolderStages(pipelineInstanceModel); populateMaterialRevisionsOnBuildCause(pipelineInstanceModel); pipelineInstanceModel.setMaterialConfigs(pipelineConfig.materialConfigs()); pipelineInstanceModel.setLatestRevisions(materialRepository.findLatestRevisions(pipelineConfig.materialConfigs())); }
@Test public void shouldUnderstandIfHasNewRevisions() throws Exception { PipelineInstanceModel instanceModel = PipelineInstanceModel.createPipeline("pipelineName", -1, "1", BuildCause.createManualForced(), new StageInstanceModels()); MaterialRevisions latest = ModificationsMother.createHgMaterialRevisions(); instanceModel.setMaterialConfigs(new MaterialConfigs(latest.getMaterialRevision(0).getMaterial().config())); instanceModel.setLatestRevisions(latest); PipelineModel pipelineModel = new PipelineModel(instanceModel.getName(), true, true, PipelinePauseInfo.notPaused()); pipelineModel.addPipelineInstance(instanceModel); instanceModel.setMaterialRevisionsOnBuildCause(MaterialRevisions.EMPTY); assertThat(pipelineModel.hasNewRevisions(), is(true)); instanceModel.setMaterialRevisionsOnBuildCause(latest); assertThat(pipelineModel.hasNewRevisions(), is(false)); }