List of usage examples for com.amazonaws.services.ecs AmazonECS describeTasks
DescribeTasksResult describeTasks(DescribeTasksRequest describeTasksRequest);
Describes a specified task or tasks.
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; } }