public void addAgentsToEnvironment(String environmentName, String... uuids) { EnvironmentConfig environment = getOrCreateEnvironment(environmentName); for (String uuid : uuids) { environment.addAgent(uuid); } }
@Test public void shouldAddAgentToEnvironmentIfNotPresent() throws Exception { environmentConfig.addAgent("uuid"); environmentConfig.addAgentIfNew("uuid"); environmentConfig.addAgentIfNew("uuid1"); assertThat(environmentConfig.getAgents().size(), is(2)); assertThat(environmentConfig.hasAgent("uuid"), is(true)); assertThat(environmentConfig.hasAgent("uuid1"), is(true)); }
@Override public void addAgent(String uuid) { this.getFirstEditablePart().addAgent(uuid); }
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 shouldReturnFalseThatNotEmptyWhenHasAgent() { environmentConfig.addAgent("agent"); assertThat(environmentConfig.isEnvironmentEmpty(), is(false)); } @Test
@Test public void shouldDeduplicateRepeatedAgentsFrom2Parts() throws Exception { pairEnvironmentConfig.get(0).addAgent("123"); pairEnvironmentConfig.get(1).addAgent("123"); EnvironmentAgentsConfig agents = pairEnvironmentConfig.getAgents(); assertThat(agents.size(), is(1)); assertThat(agents.getUuids(), hasItem("123")); }
@Test public void shouldReturnAgentsUuidsFrom2Parts() throws Exception { pairEnvironmentConfig.get(0).addAgent("123"); pairEnvironmentConfig.get(1).addAgent("345"); EnvironmentAgentsConfig agents = pairEnvironmentConfig.getAgents(); assertThat(agents.size(), is(2)); assertThat(agents.getUuids(), hasItem("123")); assertThat(agents.getUuids(), hasItem("345")); } @Test
@Test public void shouldUpdateAgents() { environmentConfig.addAgent("uuid-1"); environmentConfig.setConfigAttributes(Collections.singletonMap(BasicEnvironmentConfig.AGENTS_FIELD, Arrays.asList(Collections.singletonMap("uuid", "uuid-2"), Collections.singletonMap("uuid", "uuid-3")))); EnvironmentAgentsConfig expectedAgents = new EnvironmentAgentsConfig(); expectedAgents.add(new EnvironmentAgentConfig("uuid-2")); expectedAgents.add(new EnvironmentAgentConfig("uuid-3")); assertThat(environmentConfig.getAgents(), is(expectedAgents)); }
@Test public void shouldRemoveAgentFromEnvironment() throws Exception { environmentConfig.addAgent("uuid1"); environmentConfig.addAgent("uuid2"); assertThat(environmentConfig.getAgents().size(), is(2)); assertThat(environmentConfig.hasAgent("uuid1"), is(true)); assertThat(environmentConfig.hasAgent("uuid2"), is(true)); environmentConfig.removeAgent("uuid1"); assertThat(environmentConfig.getAgents().size(), is(1)); assertThat(environmentConfig.hasAgent("uuid1"), is(false)); assertThat(environmentConfig.hasAgent("uuid2"), is(true)); }
@Test public void shouldHaveAgentsFrom2Parts() throws Exception { pairEnvironmentConfig.get(0).addAgent("123"); pairEnvironmentConfig.get(1).addAgent("345"); EnvironmentAgentsConfig agents = pairEnvironmentConfig.getAgents(); assertTrue(pairEnvironmentConfig.hasAgent("123")); assertTrue(pairEnvironmentConfig.hasAgent("345")); } @Test
@Test public void shouldValidateDuplicateAgents() throws Exception { pairEnvironmentConfig.get(0).addAgent("random-uuid"); pairEnvironmentConfig.get(1).addAgent("random-uuid"); pairEnvironmentConfig.validate(ConfigSaveValidationContext.forChain(pairEnvironmentConfig)); assertThat(pairEnvironmentConfig.errors().isEmpty(), is(false)); assertThat(pairEnvironmentConfig.errors().firstError(), Matchers.is("Environment agent 'random-uuid' is defined more than once.")); }
@Test public void shouldCreateMatcherWhenPipelinesGiven() throws Exception { environmentConfig.addPipeline(new CaseInsensitiveString("pipeline")); environmentConfig.addAgent(AGENT_UUID); EnvironmentPipelineMatcher pipelineMatcher = environmentConfig.createMatcher(); assertThat(pipelineMatcher.match("pipeline", AGENT_UUID), is(true)); }
@Override public void update(CruiseConfig configForEdit) throws Exception { EnvironmentConfig environmentConfig = configForEdit.getEnvironments().named(this.environmentConfig.name()); for (String uuid : agentsToAdd) { environmentConfig.addAgent(uuid); } for (String uuid : agentsToRemove) { environmentConfig.removeAgent(uuid); } for (String pipelineName : pipelinesToAdd) { environmentConfig.addPipeline(new CaseInsensitiveString(pipelineName)); } for (String pipelineName : pipelinesToRemove) { environmentConfig.removePipeline(new CaseInsensitiveString(pipelineName)); } for (EnvironmentVariableConfig variableConfig : envVarsToAdd) { environmentConfig.addEnvironmentVariable(variableConfig); } for (String variableName : envVarsToRemove) { environmentConfig.getVariables().removeIfExists(variableName); } }
@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"))); }
@Test public void shouldModifyEnvironmentConfigWithFileOrigin() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); BasicEnvironmentConfig envInFile = new BasicEnvironmentConfig(new CaseInsensitiveString("Env")); mainCruiseConfig.addEnvironment(envInFile); mainCruiseConfig.setOrigins(new FileConfigOrigin()); PartialConfig partialConfig = PartialConfigMother.withEnvironment("Env"); partialConfig.setOrigins(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, true, partialConfig); cruiseConfig.getEnvironments().get(0).addAgent("agent"); assertThat(envInFile.getAgents(), hasItem(new EnvironmentAgentConfig("agent"))); }