use of com.thoughtworks.gocd.elasticagent.ecs.domain.ElasticAgentProfileProperties in project gocd-ecs-elastic-agent by gocd.
the class ProfileValidateRequestExecutor method validate.
private ValidationResult validate(Map<String, String> configuration) {
ElasticAgentProfileProperties elasticAgentProfileProperties = ElasticAgentProfileProperties.fromJson(GSON.toJson(configuration));
ValidationResult validationResult = validateMetadata(configuration);
validateReservedMemory(elasticAgentProfileProperties, validationResult);
validateBindMounts(elasticAgentProfileProperties, validationResult);
validateSpotInstanceConfiguration(elasticAgentProfileProperties, validationResult);
return validationResult;
}
use of com.thoughtworks.gocd.elasticagent.ecs.domain.ElasticAgentProfileProperties in project gocd-ecs-elastic-agent by gocd.
the class ContainerDefinitionBuilder method build.
public ContainerDefinition build() {
final ElasticAgentProfileProperties elasticAgentProfileProperties = request.elasticProfile();
final Integer memoryReservation = elasticAgentProfileProperties.platform() == LINUX ? elasticAgentProfileProperties.getReservedMemory() : null;
return new ContainerDefinition().withName(taskName).withImage(image(elasticAgentProfileProperties.getImage())).withMemory(elasticAgentProfileProperties.getMaxMemory()).withMemoryReservation(memoryReservation).withEnvironment(environmentFrom()).withDockerLabels(labelsFrom()).withCommand(elasticAgentProfileProperties.getCommand()).withCpu(elasticAgentProfileProperties.getCpu()).withPrivileged(elasticAgentProfileProperties.platform() != WINDOWS && elasticAgentProfileProperties.isPrivileged()).withLogConfiguration(pluginSettings.logConfiguration());
}
use of com.thoughtworks.gocd.elasticagent.ecs.domain.ElasticAgentProfileProperties in project gocd-ecs-elastic-agent by gocd.
the class JobCompletionRequestExecutorTest method shouldTerminateElasticAgentOnJobCompletion.
@Test
public void shouldTerminateElasticAgentOnJobCompletion() throws Exception {
JobIdentifier jobIdentifier = new JobIdentifier("test", 1L, "test", "test_stage", "1", "test_job", 100L);
String elasticAgentId = "agent-1";
ClusterProfileProperties clusterProfileProperties = new ClusterProfileProperties();
JobCompletionRequest request = new JobCompletionRequest(elasticAgentId, jobIdentifier, new ElasticAgentProfileProperties(), clusterProfileProperties);
JobCompletionRequestExecutor executor = new JobCompletionRequestExecutor(request, mockAgentInstances, mockPluginRequest);
Agents agents = new Agents();
agents.add(new Agent(elasticAgentId));
when(mockPluginRequest.listAgents()).thenReturn(agents);
GoPluginApiResponse response = executor.execute();
InOrder inOrder = inOrder(mockPluginRequest, mockAgentInstances);
inOrder.verify(mockPluginRequest).disableAgents(agentsArgumentCaptor.capture());
inOrder.verify(mockAgentInstances).terminate(elasticAgentId, clusterProfileProperties);
inOrder.verify(mockPluginRequest).deleteAgents(agentsArgumentCaptor.capture());
List<Agent> agentsToDisabled = agentsArgumentCaptor.getValue();
assertThat(1).isEqualTo(agentsToDisabled.size());
assertThat(elasticAgentId).isEqualTo(agentsToDisabled.get(0).elasticAgentId());
List<Agent> agentsToDelete = agentsArgumentCaptor.getValue();
assertThat(agentsToDisabled).isEqualTo(agentsToDelete);
assertThat(200).isEqualTo(response.responseCode());
assertThat(response.responseBody().isEmpty()).isTrue();
}
use of com.thoughtworks.gocd.elasticagent.ecs.domain.ElasticAgentProfileProperties in project gocd-ecs-elastic-agent by gocd.
the class JobCompletionRequestExecutorTest method shouldSkipTerminatingANonExistingAgent.
@Test
void shouldSkipTerminatingANonExistingAgent() throws Exception {
JobIdentifier jobIdentifier = new JobIdentifier("test", 1L, "test", "test_stage", "1", "test_job", 100L);
String elasticAgentId = "agent-1";
JobCompletionRequest request = new JobCompletionRequest(elasticAgentId, jobIdentifier, new ElasticAgentProfileProperties(), new ClusterProfileProperties());
JobCompletionRequestExecutor executor = new JobCompletionRequestExecutor(request, mockAgentInstances, mockPluginRequest);
when(mockPluginRequest.listAgents()).thenReturn(new Agents());
GoPluginApiResponse response = executor.execute();
verify(mockPluginRequest, never()).disableAgents(anyCollection());
verify(mockPluginRequest, never()).deleteAgents(anyCollection());
verifyNoInteractions(mockAgentInstances);
assertThat(200).isEqualTo(response.responseCode());
}
use of com.thoughtworks.gocd.elasticagent.ecs.domain.ElasticAgentProfileProperties in project gocd-ecs-elastic-agent by gocd.
the class CreateAgentRequestExecutorTest method shouldAskECSTaskToCreateAnAgent.
@Test
void shouldAskECSTaskToCreateAnAgent() throws Exception {
ClusterProfileProperties settings = mock(ClusterProfileProperties.class);
CreateAgentRequest request = mock(CreateAgentRequest.class);
when(request.clusterProfileProperties()).thenReturn(settings);
when(request.getJobIdentifier()).thenReturn(new JobIdentifier("test-pipeline", 1L, "Test Pipeline", "test-stage", "1", "test-job", 100L));
when(request.elasticProfile()).thenReturn(new ElasticAgentProfileProperties());
ECSTasks agentInstances = mock(ECSTasks.class);
PluginRequest pluginRequest = mock(PluginRequest.class);
final EventStream eventStream = mock(EventStream.class);
new CreateAgentRequestExecutor(request, agentInstances, pluginRequest, eventStream).execute();
verify(agentInstances).create(eq(request), eq(settings), any(ConsoleLogAppender.class));
}
Aggregations