@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); } }
@Override public boolean equals(Object o) { if (this == o) { return true; } EnvironmentConfig that = as(EnvironmentConfig.class, o); if (that == null) return false; if (agents != null ? !agents.equals(that.getAgents()) : that.getAgents() != null) { return false; } if (name != null ? !name.equals(that.name()) : that.name() != null) { return false; } if (pipelines != null ? !pipelines.equals(that.getPipelines()) : that.getPipelines() != null) { return false; } if (variables != null ? !variables.equals(that.getVariables()) : that.getVariables() != null) { return false; } return true; }
@Override public void addAgentIfNew(String uuid) { for (EnvironmentConfig part : this) { if (part.hasAgent(uuid)) { return; } } this.getFirstEditablePart().addAgentIfNew(uuid); }
public ConfigOrigin getOriginForEnvironmentVariable(String variableName) { for (EnvironmentConfig part : this) { if (part.getVariables().hasVariable(variableName)) { return part.getOrigin(); } } return null; }
public List<CaseInsensitiveString> names() { ArrayList<CaseInsensitiveString> names = new ArrayList<>(); for (EnvironmentConfig environment : this) { names.add(environment.name()); } return names; }
@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)); }
@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)); }
@Override public void addEnvironmentVariable(String name, String value) { this.getFirstEditablePart().addEnvironmentVariable(name, value); }
@Test public void shouldUpdateEnvironmentVariables() { environmentConfig.addEnvironmentVariable("hello", "world"); environmentConfig.setConfigAttributes(Collections.singletonMap(BasicEnvironmentConfig.VARIABLES_FIELD, Arrays.asList(envVar("foo", "bar"), envVar("baz", "quux")))); assertThat(environmentConfig.getVariables(), hasItem(new EnvironmentVariableConfig("foo", "bar"))); assertThat(environmentConfig.getVariables(), hasItem(new EnvironmentVariableConfig("baz", "quux"))); assertThat(environmentConfig.getVariables().size(), is(2)); }
private boolean validateRemovalOfInvalidAgents() { EnvironmentConfig environmentConfig = this.environmentConfig; for (String agentToRemove : agentsToRemove) { if (!environmentConfig.hasAgent(agentToRemove)) { String message = String.format("Agent with uuid '%s' does not exist in environment '%s'", agentToRemove, environmentConfig.name()); result.unprocessableEntity(LocalizedMessage.composite(actionFailed, message)); return false; } } return true; }
private GoDashboardEnvironment dashboardEnvironmentFor(EnvironmentConfig environment, DashboardFilter filter, Username user, Users allowedUsers, GoDashboardPipelines allPipelines) { GoDashboardEnvironment env = new GoDashboardEnvironment(environment.name().toString(), allowedUsers); environment.getPipelineNames().forEach(pipelineName -> { GoDashboardPipeline pipeline = allPipelines.find(pipelineName); if (null != pipeline && pipeline.canBeViewedBy(user.getUsername().toString()) && filter.isPipelineVisible(pipelineName)) { env.addPipeline(pipeline); } }); return env; }
@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)); }
private boolean validateRemovalOfInvalidEnvironmentVariable() { EnvironmentConfig environmentConfig = this.environmentConfig; for (String variableName : envVarsToRemove) { if (!environmentConfig.getVariables().hasVariable(variableName)) { String message = String.format("Environment variable with name '%s' does not exist in environment '%s'", variableName, environmentConfig.name()); result.unprocessableEntity(LocalizedMessage.composite(actionFailed, message)); return false; } } return true; }
@Override public void addPipeline(CaseInsensitiveString pipelineName) { this.getFirstEditablePart().addPipeline(pipelineName); }
private void validateDuplicateAgents(ValidationContext validationContext) { ArrayList<String> allAgents = new ArrayList<>(); for (EnvironmentConfig part : this) { for (EnvironmentAgentConfig agent : part.getAgents()) { if (allAgents.contains(agent.getUuid())) { String message = String.format("Environment agent '%s' is defined more than once.", agent.getUuid()); configErrors.add("agent", message); } else { allAgents.add(agent.getUuid()); } } } }
@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)); }
@Test public void shouldUpdatePipelines() { environmentConfig.addPipeline(new CaseInsensitiveString("baz")); environmentConfig.setConfigAttributes(Collections.singletonMap(BasicEnvironmentConfig.PIPELINES_FIELD, Arrays.asList(Collections.singletonMap("name", "foo"), Collections.singletonMap("name", "bar")))); assertThat(environmentConfig.getPipelineNames(), is(Arrays.asList(new CaseInsensitiveString("foo"), new CaseInsensitiveString("bar")))); }
@Test public void shouldReturnAllPipelinesForRemotePipelinesWhenIsRemote() { environmentConfig.setOrigins(new RepoConfigOrigin()); environmentConfig.addPipeline(new CaseInsensitiveString("pipe")); assertThat(environmentConfig.getRemotePipelines().isEmpty(), is(false)); }
public void addAgentsToEnvironment(String environmentName, String... uuids) { EnvironmentConfig environment = getOrCreateEnvironment(environmentName); for (String uuid : uuids) { environment.addAgent(uuid); } }