@Override public void addEnvironment(BasicEnvironmentConfig config) { environments.add(config); }
public Agents agentsForPipeline(final CaseInsensitiveString pipelineName) { Agents configs = new Agents(); if (environments.isPipelineAssociatedWithAnyEnvironment(pipelineName)) { EnvironmentConfig forPipeline = environments.findEnvironmentForPipeline(pipelineName); for (EnvironmentAgentConfig environmentAgentConfig : forPipeline.getAgents()) { configs.add(goConfigService.agentByUuid(environmentAgentConfig.getUuid())); } } else { for (AgentConfig agentConfig : goConfigService.agents()) { if (!environments.isAgentUnderEnvironment(agentConfig.getUuid())) { configs.add(agentConfig); } } } return configs; }
@Override public void update(CruiseConfig preprocessedConfig) { EnvironmentsConfig environments = preprocessedConfig.getEnvironments(); EnvironmentConfig envToRemove = environments.find(new CaseInsensitiveString(oldEnvironmentConfigName)); int index = environments.indexOf(envToRemove); environments.remove(index); environments.add(index, environmentConfig); }
public EnvironmentsConfig getLocal() { EnvironmentsConfig locals = new EnvironmentsConfig(); for(EnvironmentConfig environmentConfig : this) { EnvironmentConfig local = environmentConfig.getLocal(); if(local != null) locals.add(local); } return locals; } }
public CruiseConfig update(CruiseConfig cruiseConfig) throws Exception { EnvironmentsConfig allEnvironments = cruiseConfig.getEnvironments(); for (String environment : environments.split(",")) { String environmentName = environment.trim(); if (allEnvironments.hasEnvironmentNamed(new CaseInsensitiveString(environmentName))) { allEnvironments.named(new CaseInsensitiveString(environmentName)).addAgent(uuid); } else { LOGGER.warn("[Agent Auto Registration] Agent with uuid {} could not be assigned to environment {} as it does not exist.", uuid, environmentName); } } return cruiseConfig; } }
@Test public void shouldParseFileWithOneEnvironment() throws Exception { EnvironmentConfig env = EnvironmentConfigMother.environment("dev"); File file = helper.addFileWithEnvironment("dev-env.gocd.xml", env); PartialConfig part = xmlPartialProvider.parseFile(file); EnvironmentsConfig loadedEnvs = part.getEnvironments(); assertThat(loadedEnvs.size(),is(1)); assertThat(loadedEnvs.get(0),is(env)); }
@Test public void shouldRemoveAgentFromAllEnvironments() throws Exception { BasicEnvironmentConfig env2 = new BasicEnvironmentConfig(new CaseInsensitiveString("prod")); env2.addPipeline(new CaseInsensitiveString("test")); env2.addAgent("agent-one"); env2.addAgent("agent-two"); configs.add(env2); BasicEnvironmentConfig env3 = new BasicEnvironmentConfig(new CaseInsensitiveString("dev")); env3.addPipeline(new CaseInsensitiveString("build")); env3.addAgent("agent-two"); env3.addAgent("agent-three"); configs.add(env3); assertThat(configs.get(0).getAgents().size(), is(1)); assertThat(configs.get(1).getAgents().size(), is(2)); assertThat(configs.environmentsForAgent("agent-one").size(), is(2)); configs.removeAgentFromAllEnvironments("agent-one"); assertThat(configs.get(0).getAgents().size(), is(0)); assertThat(configs.get(1).getAgents().size(), is(1)); assertThat(configs.get(2).getAgents().size(), is(2)); assertThat(configs.environmentsForAgent("agent-one").size(), is(0)); assertThat(configs.environmentsForAgent("agent-two").size(), is(2)); assertThat(configs.environmentsForAgent("agent-three").size(), is(1)); }
@Test public void shouldGetLocalPartsWhenOriginIsMixed() { env.setOrigins(new FileConfigOrigin()); BasicEnvironmentConfig prodLocalPart = new BasicEnvironmentConfig(new CaseInsensitiveString("PROD")); prodLocalPart.addAgent("1235"); prodLocalPart.setOrigins(new FileConfigOrigin()); BasicEnvironmentConfig prodRemotePart = new BasicEnvironmentConfig(new CaseInsensitiveString("PROD")); prodRemotePart.setOrigins(new RepoConfigOrigin()); MergeEnvironmentConfig pairEnvironmentConfig = new MergeEnvironmentConfig(prodLocalPart, prodRemotePart); configs.add(pairEnvironmentConfig); assertThat(configs.getLocal().size(), is(2)); assertThat(configs.getLocal(), hasItem(env)); assertThat(configs.getLocal(), hasItem(prodLocalPart)); } }
@Override public String toString() { return String.format("ConfigPartial: %s pipes, %s environments; From %s",pipelines.size(),environments.size(),origin); }
@Test public void shouldMergeWhenSameEnvironmentExistsInManyPartials(){ BasicCruiseConfig cruiseConfig = GoConfigMother.configWithPipelines("p1", "p2"); ConfigRepoConfig repoConfig1 = new ConfigRepoConfig(MaterialConfigsMother.gitMaterialConfig("url1"), "plugin"); ConfigRepoConfig repoConfig2 = new ConfigRepoConfig(MaterialConfigsMother.gitMaterialConfig("url2"), "plugin"); cruiseConfig.setConfigRepos(new ConfigReposConfig(repoConfig1, repoConfig2)); PartialConfig partialConfigInRepo1 = PartialConfigMother.withEnvironment("environment", new RepoConfigOrigin(repoConfig1, "repo1_r1")); RepoConfigOrigin configOrigin = new RepoConfigOrigin(repoConfig2, "repo2_r1"); PartialConfig partialConfigInRepo2 = PartialConfigMother.withEnvironment("environment", configOrigin); BasicEnvironmentConfig environment2InRepo2 = EnvironmentConfigMother.environment("environment2_in_repo2"); environment2InRepo2.setOrigins(configOrigin); partialConfigInRepo2.getEnvironments().add(environment2InRepo2); cruiseConfig.merge(new ArrayList<>(Arrays.asList(partialConfigInRepo2, partialConfigInRepo1)), false); assertThat(cruiseConfig.getEnvironments().hasEnvironmentNamed(new CaseInsensitiveString("environment")),is(true)); assertThat(cruiseConfig.getEnvironments().hasEnvironmentNamed(new CaseInsensitiveString("environment2_in_repo2")),is(true)); }
public CaseInsensitiveString findEnvironmentNameForPipeline(final CaseInsensitiveString pipelineName) { EnvironmentConfig environment = findEnvironmentForPipeline(pipelineName); return environment == null ? null : environment.name(); }
PartialConfig partialConfig = xmlLoader.fromXmlPartial(partialConfigWithPipeline, PartialConfig.class); EnvironmentsConfig environmentsConfig = partialConfig.getEnvironments(); assertThat(environmentsConfig.size(), is(2)); EnvironmentPipelineMatchers matchers = environmentsConfig.matchers(); assertThat(matchers.size(), is(2)); ArrayList<String> uat_uuids = new ArrayList<String>() {{
public boolean hasEnvironmentNamed(CaseInsensitiveString environmentName) { return find(environmentName) != null; }
@Test public void shouldModifyEmptyEnvironmentConfigWithUIOrigin() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); PartialConfig partialConfig = PartialConfigMother.withEnvironment("remoteEnv"); partialConfig.setOrigins(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, true, partialConfig); cruiseConfig.getEnvironments().get(0).addAgent("agent"); MergeEnvironmentConfig mergedEnv = (MergeEnvironmentConfig) cruiseConfig.getEnvironments().get(0); assertThat(mergedEnv.getFirstEditablePart().getAgents(), hasItem(new EnvironmentAgentConfig("agent"))); }
public Set<String> environmentsFor(String uuid) { return environments.environmentsForAgent(uuid); }
@Override public void update(CruiseConfig modifiedConfig) throws Exception { Set<CaseInsensitiveString> allEnvironmentNames = new HashSet<>(goConfigService.getEnvironments().names()); EnvironmentConfig environmentConfig = modifiedConfig.getEnvironments().find(new CaseInsensitiveString(environment)); if (environmentConfig != null) { environmentConfig.addAgentIfNew(agentConfig.getUuid()); EnvironmentConfig environmentConfig = modifiedConfig.getEnvironments().find(new CaseInsensitiveString(environment)); if (environmentConfig != null) { environmentConfig.removeAgent(agentConfig.getUuid());
@Test public void shouldFindOutIfGivenAgentUUIDIsReferencedByAnyEnvironment() throws Exception { assertThat(configs.isAgentUnderEnvironment("agent-one"), is(true)); }
@Test public void shouldFindOutIfAGivenPipelineDoesNotBelongsToAnyEnvironment() throws Exception { assertThat(configs.isPipelineAssociatedWithAnyEnvironment(new CaseInsensitiveString("unit-test")), is(false)); }