private List<CaseInsensitiveString> getPipelineNamesInConfig() { return configFileDao.load().getAllPipelineNames(); }
public List<GoDashboardPipeline> allPipelines(CruiseConfig config) { List<CaseInsensitiveString> allPipelineNames = config.getAllPipelineNames(); HashSet<CaseInsensitiveString> currentPipelineNames = new HashSet<>(allPipelineNames); Collection<CaseInsensitiveString> pipelinesToRemove = Sets.difference(lastKnownPipelineNames, currentPipelineNames); Collection<CaseInsensitiveString> pipelinesToAdd = Sets.difference(currentPipelineNames, lastKnownPipelineNames); if (!pipelinesToAdd.isEmpty()) { historyForDashboard.addAll(loadHistoryForPipelines(new ArrayList<>(CaseInsensitiveString.toStringList(pipelinesToAdd)))); } for (CaseInsensitiveString pipelineNameToRemove : new ArrayList<>(pipelinesToRemove)) { clearEntryFor(pipelineNameToRemove); } lastKnownPipelineNames = currentPipelineNames; LOGGER.debug("Loading permissions from authority"); final Map<CaseInsensitiveString, Permissions> pipelinesAndTheirPermissions = permissionsAuthority.pipelinesAndTheirPermissions(); final List<GoDashboardPipeline> pipelines = new ArrayList<>(1024); LOGGER.debug("Populating dashboard pipelines"); config.accept((PipelineGroupVisitor) group -> group.accept(pipelineConfig -> { long start = System.currentTimeMillis(); Permissions permissions = permissionsFor(pipelineConfig, pipelinesAndTheirPermissions); pipelines.add(createGoDashboardPipeline(pipelineConfig, permissions, historyForDashboard, group)); LOGGER.debug("It took {}ms to process pipeline {}", (System.currentTimeMillis() - start), pipelineConfig.getName()); })); LOGGER.debug("Done populating dashboard pipelines"); this.everLoadedCurrentState = true; return pipelines; }
public void validate(ValidationContext validationContext) { List<CaseInsensitiveString> allPipelineNames = validationContext.getCruiseConfig().getAllPipelineNames(); List<CaseInsensitiveString> allEnvironmentNames = new ArrayList<>(); Map<CaseInsensitiveString, CaseInsensitiveString> pipelineToEnvMap = new HashMap<>(); for (EnvironmentConfig environmentConfig : this) { if (allEnvironmentNames.contains(environmentConfig.name())) { environmentConfig.addError("name", String.format("Environment with name '%s' already exists.", environmentConfig.name())); } else { allEnvironmentNames.add(environmentConfig.name()); } for (EnvironmentPipelineConfig pipeline : environmentConfig.getPipelines()) { if (!allPipelineNames.contains(pipeline.getName())) { environmentConfig.addError("pipeline", String.format("Environment '%s' refers to an unknown pipeline '%s'.", environmentConfig.name(), pipeline.getName())); } if (pipelineToEnvMap.containsKey(pipeline.getName())) { environmentConfig.addError("pipeline", "Associating pipeline(s) which is already part of " + pipelineToEnvMap.get(pipeline.getName()) + " environment"); } else { pipelineToEnvMap.put(pipeline.getName(), environmentConfig.name()); } } } }
public Map<CaseInsensitiveString, CanDeleteResult> canDeletePipelines() { CruiseConfig cruiseConfig = goConfigService.getCurrentConfig(); Map<CaseInsensitiveString, CanDeleteResult> nameToCanDeleteIt = new HashMap<>(); Hashtable<CaseInsensitiveString, Node> hashtable = cruiseConfig.getDependencyTable(); List<CaseInsensitiveString> pipelineNames = cruiseConfig.getAllPipelineNames(); for (CaseInsensitiveString pipelineName : pipelineNames) { ConfigOrigin origin = pipelineConfigOrigin(cruiseConfig, pipelineName); if (origin != null && !origin.isLocal()) { nameToCanDeleteIt.put(pipelineName, new CanDeleteResult(false, "Cannot delete pipeline '" + pipelineName + "' defined in configuration repository '" + origin.displayName() + "'.")); } else { CaseInsensitiveString envName = environmentUsedIn(cruiseConfig, pipelineName); if (envName != null) { nameToCanDeleteIt.put(pipelineName, new CanDeleteResult(false, "Cannot delete pipeline '" + pipelineName + "' as it is present in environment '" + envName + "'.")); } else { CaseInsensitiveString downStream = downstreamOf(hashtable, pipelineName); if (downStream != null) { nameToCanDeleteIt.put(pipelineName, new CanDeleteResult(false, "Cannot delete pipeline '" + pipelineName + "' as pipeline '" + downStream + "' depends on it.")); } else { nameToCanDeleteIt.put(pipelineName, new CanDeleteResult(true, "Delete this pipeline.")); } } } } return nameToCanDeleteIt; }
@Test public void shouldGetAllPipelineNamesFromAllParts() { pipelines = new BasicPipelineConfigs("group_main", new Authorization(), PipelineConfigMother.pipelineConfig("pipe1")); BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, PartialConfigMother.withPipelineInGroup("pipe2", "g2"), PartialConfigMother.withPipelineInGroup("pipe3", "g3")); assertThat(cruiseConfig.getAllPipelineNames(), hasItem(new CaseInsensitiveString("pipe1"))); assertThat(cruiseConfig.getAllPipelineNames(), hasItem(new CaseInsensitiveString("pipe2"))); assertThat(cruiseConfig.getAllPipelineNames(), hasItem(new CaseInsensitiveString("pipe3"))); }
@Test public void shouldUpdatePipelineConfigsListWhenAPartialIsMerged(){ cruiseConfig = new BasicCruiseConfig(pipelines); PartialConfig partial = PartialConfigMother.withPipeline("pipeline3"); ConfigRepoConfig configRepoConfig = new ConfigRepoConfig(new GitMaterialConfig("http://git"), "myplug"); partial.setOrigins(new RepoConfigOrigin(configRepoConfig,"123")); ConfigReposConfig reposConfig = new ConfigReposConfig(); reposConfig.add(configRepoConfig); cruiseConfig.setConfigRepos(reposConfig); cruiseConfig.merge(Arrays.asList(partial), false); PipelineConfig pipeline3 = partial.getGroups().first().findBy(new CaseInsensitiveString("pipeline3")); assertThat(cruiseConfig.getAllPipelineConfigs().contains(pipeline3), is(true)); assertThat(cruiseConfig.getAllPipelineNames().contains(pipeline3.name()), is(true)); } }
@Test public void shouldgetAllPipelineNamesFromAllParts() { pipelines = new BasicPipelineConfigs("group_main", new Authorization(), PipelineConfigMother.pipelineConfig("pipe1")); BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, PartialConfigMother.withPipelineInGroup("pipe2", "g2"), PartialConfigMother.withPipelineInGroup("pipe3", "g3")); assertThat(cruiseConfig.getAllPipelineNames(), contains( new CaseInsensitiveString("pipe1"), new CaseInsensitiveString("pipe2"), new CaseInsensitiveString("pipe3"))); }