Example usage for com.amazonaws.services.ecs.model KeyValuePair KeyValuePair

List of usage examples for com.amazonaws.services.ecs.model KeyValuePair KeyValuePair

Introduction

In this page you can find the example usage for com.amazonaws.services.ecs.model KeyValuePair KeyValuePair.

Prototype

KeyValuePair

Source Link

Usage

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;
    }
}