Example usage for com.amazonaws.services.ecs AmazonECS describeTasks

List of usage examples for com.amazonaws.services.ecs AmazonECS describeTasks

Introduction

In this page you can find the example usage for com.amazonaws.services.ecs AmazonECS describeTasks.

Prototype

DescribeTasksResult describeTasks(DescribeTasksRequest describeTasksRequest);

Source Link

Document

Describes a specified task or tasks.

Usage

From source file:com.netflix.spinnaker.clouddriver.ecs.provider.agent.TaskCachingAgent.java

License:Apache License

@Override
protected List<Task> getItems(AmazonECS ecs, ProviderCache providerCache) {
    List<Task> taskList = new LinkedList<>();
    Set<String> clusters = getClusters(ecs, providerCache);

    for (String cluster : clusters) {
        String nextToken = null;//  ww w. j av a2 s .c  o  m
        do {
            ListTasksRequest listTasksRequest = new ListTasksRequest().withCluster(cluster);
            if (nextToken != null) {
                listTasksRequest.setNextToken(nextToken);
            }
            ListTasksResult listTasksResult = ecs.listTasks(listTasksRequest);
            List<String> taskArns = listTasksResult.getTaskArns();
            if (taskArns.size() == 0) {
                continue;
            }
            List<Task> tasks = ecs
                    .describeTasks(new DescribeTasksRequest().withCluster(cluster).withTasks(taskArns))
                    .getTasks();
            taskList.addAll(tasks);
            nextToken = listTasksResult.getNextToken();
        } while (nextToken != null && nextToken.length() != 0);
    }
    return taskList;
}

From source file:com.remediatetheflag.global.utils.AWSHelper.java

License:Apache License

public Date getRunningECSTaskStartTime(String taskArn) {
    String regionFromArn = taskArn.split(":")[3];
    AmazonECS client = AmazonECSClientBuilder.standard().withRegion(regionFromArn)
            .withCredentials(new DefaultAWSCredentialsProviderChain()).build();
    DescribeTasksRequest request = new DescribeTasksRequest().withCluster(RTFConfig.getExercisesCluster())
            .withTasks(taskArn);//from   ww  w . ja  va 2  s. c om
    try {
        DescribeTasksResult response = client.describeTasks(request);
        return response.getTasks().get(0).getCreatedAt();
    } catch (Exception e) {
        logger.error("Could not get creation time for task arn " + taskArn);
        return null;
    }
}

From source file:com.remediatetheflag.global.utils.AWSHelper.java

License:Apache License

public RTFInstanceReservation pollReservation(RTFInstanceReservation reservation) {

    if (null == reservation.getEcs()) {
        reservation.setError(true);/* w w  w. j a va  2s.co m*/
        reservation.setFulfilled(false);
        reservation.setWaitSeconds(0);
        return reservation;
    }
    AmazonECS client = AmazonECSClientBuilder.standard().withRegion(reservation.getEcs().getRegion())
            .withCredentials(new DefaultAWSCredentialsProviderChain()).build();

    DescribeTasksRequest request = new DescribeTasksRequest().withCluster(RTFConfig.getExercisesCluster())
            .withTasks(reservation.getEcs().getTaskArn());
    try {
        DescribeTasksResult response = client.describeTasks(request);

        if (response.getTasks().isEmpty()) {
            reservation.setError(true);
            reservation.setFulfilled(true);
            reservation.setWaitSeconds(0);
            return reservation;
        }

        Integer rdpPort = -1;
        Integer httpPort = -1;

        Task task = response.getTasks().get(0);

        if (task.getLastStatus().equalsIgnoreCase(Constants.AWS_ECS_STATUS_STOPPED)) {
            reservation.setError(true);
            reservation.setFulfilled(true);
            reservation.setWaitSeconds(0);
            return reservation;
        }

        List<NetworkBinding> nb = task.getContainers().get(0).getNetworkBindings();
        if (nb.size() > 2) {
            logger.warn("More than two port bindings, only RDP 3389 and HTTP 8080 will be mapped");
        }
        for (NetworkBinding b : nb) {
            if (b.getContainerPort().equals(3389)) {
                rdpPort = b.getHostPort();
            } else if (b.getContainerPort().equals(8080)) {
                httpPort = b.getHostPort();
            }
        }
        if (rdpPort == -1 || httpPort == -1) {
            reservation.setFulfilled(false);
            reservation.setError(false);
            reservation.setWaitSeconds(10);
            return reservation;
        }
        reservation.getEcs().setHttpPort(httpPort);
        reservation.getEcs().setRdpPort(rdpPort);

        String containerInstanceId = task.getContainerInstanceArn();
        DescribeContainerInstancesRequest containerRequest = new DescribeContainerInstancesRequest()
                .withCluster(RTFConfig.getExercisesCluster()).withContainerInstances(containerInstanceId);
        DescribeContainerInstancesResult containerResponse = client
                .describeContainerInstances(containerRequest);

        if (containerResponse.getContainerInstances().isEmpty()) {
            reservation.setFulfilled(false);
            reservation.setError(true);
            reservation.setWaitSeconds(0);
            return reservation;
        }
        String ec2InstanceId = containerResponse.getContainerInstances().get(0).getEc2InstanceId();

        AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard().withRegion(reservation.getEcs().getRegion())
                .withCredentials(new DefaultAWSCredentialsProviderChain()).build();
        DescribeInstancesRequest instanceRequest = new DescribeInstancesRequest()
                .withInstanceIds(ec2InstanceId);
        DescribeInstancesResult instanceInstances = ec2.describeInstances(instanceRequest);

        if (instanceInstances.getReservations().isEmpty()
                || instanceInstances.getReservations().get(0).getInstances().isEmpty()) {
            reservation.setFulfilled(false);
            reservation.setError(true);
            reservation.setWaitSeconds(0);
            return reservation;
        }

        String ipAddress = instanceInstances.getReservations().get(0).getInstances().get(0)
                .getPrivateIpAddress();
        reservation.getEcs().setIpAddress(ipAddress);
        reservation.setFulfilled(true);
        reservation.setError(false);
        reservation.setWaitSeconds(0);
        return reservation;

    } catch (Exception e) {
        logger.error("Error pollReservation " + e.getMessage());
        reservation.setError(true);
        reservation.setFulfilled(false);
        reservation.setWaitSeconds(0);
        return reservation;
    }
}