List of usage examples for com.amazonaws.services.ecs.model KeyValuePair KeyValuePair
KeyValuePair
From source file:com.cloudbees.jenkins.plugins.amazonecs.ECSService.java
License:Open Source License
String runEcsTask(final ECSSlave slave, final ECSTaskTemplate template, String clusterArn, Collection<String> command) throws IOException, AbortException { AmazonECSClient client = getAmazonECSClient(); String definitionArn = template.getTaskDefinitionArn(); slave.setTaskDefinitonArn(definitionArn); KeyValuePair envNodeName = new KeyValuePair(); envNodeName.setName("SLAVE_NODE_NAME"); envNodeName.setValue(slave.getComputer().getName()); KeyValuePair envNodeSecret = new KeyValuePair(); envNodeSecret.setName("SLAVE_NODE_SECRET"); envNodeSecret.setValue(slave.getComputer().getJnlpMac()); final RunTaskResult runTaskResult = client .runTask(new RunTaskRequest().withTaskDefinition(definitionArn) .withOverrides(new TaskOverride().withContainerOverrides(new ContainerOverride() .withName(template.getFullQualifiedTemplateName(slave.getCloud())) .withCommand(command).withEnvironment(envNodeName).withEnvironment(envNodeSecret))) .withCluster(clusterArn)); if (!runTaskResult.getFailures().isEmpty()) { LOGGER.log(Level.WARNING, "Slave {0} - Failure to run task with definition {1} on ECS cluster {2}", new Object[] { slave.getNodeName(), definitionArn, clusterArn }); for (Failure failure : runTaskResult.getFailures()) { LOGGER.log(Level.WARNING, "Slave {0} - Failure reason={1}, arn={2}", new Object[] { slave.getNodeName(), failure.getReason(), failure.getArn() }); }//from ww w.j a v a 2s . co m throw new AbortException("Failed to run slave container " + slave.getNodeName()); } return runTaskResult.getTasks().get(0).getTaskArn(); }
From source file:com.cloudbees.jenkins.plugins.amazonecs.ECSTaskTemplate.java
License:Open Source License
private Collection<KeyValuePair> getEnvironmentKeyValuePairs() { if (null == environments || environments.isEmpty()) { return null; }// w w w . ja v a2s .c o m Collection<KeyValuePair> items = new ArrayList<KeyValuePair>(); for (EnvironmentEntry environment : environments) { String name = environment.name; String value = environment.value; if (StringUtils.isEmpty(name) || StringUtils.isEmpty(value)) { continue; } items.add(new KeyValuePair().withName(name).withValue(value)); } return items; }
From source file:com.cloudbees.jenkins.plugins.amazonecs.ECSTaskTemplate.java
License:Open Source License
public RegisterTaskDefinitionRequest asRegisterTaskDefinitionRequest(ECSCloud owner) { String familyName = getFullQualifiedTemplateName(owner); final ContainerDefinition def = new ContainerDefinition().withName(familyName).withImage(image) .withEnvironment(getEnvironmentKeyValuePairs()).withExtraHosts(getExtraHostEntries()) .withMemory(memory).withMountPoints(getMountPointEntries()).withCpu(cpu).withPrivileged(privileged); if (entrypoint != null) def.withEntryPoint(StringUtils.split(entrypoint)); if (jvmArgs != null) def.withEnvironment(new KeyValuePair().withName("JAVA_OPTS").withValue(jvmArgs)).withEssential(true); if (logDriver != null) { LogConfiguration logConfig = new LogConfiguration(); logConfig.setLogDriver(logDriver); logConfig.setOptions(getLogDriverOptionsMap()); def.withLogConfiguration(logConfig); }//from ww w.ja va 2 s. c o m return new RegisterTaskDefinitionRequest().withFamily(familyName).withVolumes(getVolumeEntries()) .withContainerDefinitions(def); }
From source file:com.netflix.spinnaker.clouddriver.ecs.deploy.ops.CreateServerGroupAtomicOperation.java
License:Apache License
private TaskDefinition registerTaskDefinition(AmazonECS ecs, String version) { Collection<KeyValuePair> containerEnvironment = new LinkedList<>(); containerEnvironment.add(new KeyValuePair().withName("SERVER_GROUP").withValue(version)); containerEnvironment.add(new KeyValuePair().withName("CLOUD_STACK").withValue(description.getStack())); containerEnvironment//from w w w .j a v a 2 s . c o m .add(new KeyValuePair().withName("CLOUD_DETAIL").withValue(description.getFreeFormDetails())); PortMapping portMapping = new PortMapping().withHostPort(0) .withContainerPort(description.getContainerPort()) .withProtocol(description.getPortProtocol() != null ? description.getPortProtocol() : "tcp"); Collection<PortMapping> portMappings = new LinkedList<>(); portMappings.add(portMapping); ContainerDefinition containerDefinition = new ContainerDefinition().withName(version) .withEnvironment(containerEnvironment).withPortMappings(portMappings) .withCpu(description.getComputeUnits()).withMemoryReservation(description.getReservedMemory()) .withImage(description.getDockerImageAddress()); Collection<ContainerDefinition> containerDefinitions = new LinkedList<>(); containerDefinitions.add(containerDefinition); RegisterTaskDefinitionRequest request = new RegisterTaskDefinitionRequest() .withContainerDefinitions(containerDefinitions).withFamily(getFamilyName()); if (!description.getIamRole().equals("None (No IAM role)")) { checkRoleTrustRelations(description.getIamRole()); request.setTaskRoleArn(description.getIamRole()); } RegisterTaskDefinitionResult registerTaskDefinitionResult = ecs.registerTaskDefinition(request); return registerTaskDefinitionResult.getTaskDefinition(); }
From source file:com.remediatetheflag.global.utils.AWSHelper.java
License:Apache License
protected RTFECSContainerTask createInstance(String clusterName, String instanceName, String password, RTFECSTaskDefinition taskDef, Integer duration, User user) { AmazonECS client = AmazonECSClientBuilder.standard().withRegion(taskDef.getRegion()) .withCredentials(new DefaultAWSCredentialsProviderChain()).build(); TaskOverride overrides = new TaskOverride(); List<ContainerOverride> containerOverrides = new LinkedList<ContainerOverride>(); ContainerOverride co = new ContainerOverride(); List<KeyValuePair> environment = new LinkedList<KeyValuePair>(); KeyValuePair kv = new KeyValuePair(); kv.setName(Constants.ENV_USR_PWD);/*from w w w . j a va 2 s . c om*/ kv.setValue(password); environment.add(kv); co.setEnvironment(environment); co.setName(taskDef.getContainerName()); containerOverrides.add(co); overrides.setContainerOverrides(containerOverrides); RunTaskRequest request = new RunTaskRequest().withCluster(clusterName) .withTaskDefinition(taskDef.getTaskDefinitionArn()).withOverrides(overrides); logger.debug("# ECS Requesting Task " + instanceName + " for user " + user.getIdUser() + " with task definition: " + taskDef.getTaskDefinitionArn() + " on cluster: " + clusterName + " on region " + taskDef.getRegion().getName()); try { RunTaskResult response = client.runTask(request); String failureReason = ""; if (response.getTasks().isEmpty()) { for (Failure failure : response.getFailures()) { failureReason += "\n" + failure.getReason(); } logger.error("Task creation failed due to: \n" + failureReason); return null; } Task task = response.getTasks().get(0); RTFECSContainerTask rtfInstance = new RTFECSContainerTask(); rtfInstance.setCluster(task.getClusterArn()); rtfInstance.setTaskArn(task.getTaskArn()); rtfInstance.setIdContainerInstance(task.getContainerInstanceArn()); rtfInstance.setName(instanceName); rtfInstance.setRegion(taskDef.getRegion()); rtfInstance.setUser(user); rtfInstance.setCreateTime(task.getCreatedAt()); rtfInstance.setStatus(Constants.STATUS_PENDING); logger.debug("# ECS Task " + instanceName + " created for user " + user.getIdUser() + " with task definition: " + taskDef.getTaskDefinitionName() + " start: " + rtfInstance.getCreateTime()); return rtfInstance; } catch (Exception e) { logger.warn("# ECS Task " + instanceName + " could not be created for user " + user.getIdUser() + " " + e.getMessage()); return null; } }