Example usage for com.amazonaws.services.ecs.model LoadBalancer getTargetGroupArn

List of usage examples for com.amazonaws.services.ecs.model LoadBalancer getTargetGroupArn

Introduction

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

Prototype


public String getTargetGroupArn() 

Source Link

Document

The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set.

Usage

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

License:Apache License

@Override
protected List<TaskHealth> getItems(AmazonECS ecs, ProviderCache providerCache) {
    TaskCacheClient taskCacheClient = new TaskCacheClient(providerCache, objectMapper);
    ServiceCacheClient serviceCacheClient = new ServiceCacheClient(providerCache, objectMapper);

    AmazonElasticLoadBalancing amazonloadBalancing = amazonClientProvider
            .getAmazonElasticLoadBalancingV2(accountName, awsCredentialsProvider, region);

    ContainerInstanceCacheClient containerInstanceCacheClient = new ContainerInstanceCacheClient(providerCache);

    List<TaskHealth> taskHealthList = new LinkedList<>();
    taskEvicitions = new LinkedList<>();
    serviceEvicitions = new LinkedList<>();
    taskDefEvicitions = new LinkedList<>();

    Collection<Task> tasks = taskCacheClient.getAll(accountName, region);
    if (tasks != null) {
        for (Task task : tasks) {
            String containerInstanceCacheKey = Keys.getContainerInstanceKey(accountName, region,
                    task.getContainerInstanceArn());
            ContainerInstance containerInstance = containerInstanceCacheClient.get(containerInstanceCacheKey);

            String serviceName = StringUtils.substringAfter(task.getGroup(), "service:");
            String serviceKey = Keys.getServiceKey(accountName, region, serviceName);
            Service service = serviceCacheClient.get(serviceKey);
            if (service == null) {
                String taskEvictionKey = Keys.getTaskKey(accountName, region, task.getTaskId());
                taskEvicitions.add(taskEvictionKey);
                continue;
            }/* w  w w . j  ava2 s. c  o  m*/

            if (task.getContainers().size() == 0 || task.getContainers().get(0).getNetworkBindings() == null
                    || task.getContainers().get(0).getNetworkBindings().size() == 0
                    || task.getContainers().get(0).getNetworkBindings().get(0) == null) {
                continue;
            }

            int port = task.getContainers().get(0).getNetworkBindings().get(0).getHostPort();

            List<LoadBalancer> loadBalancers = service.getLoadBalancers();

            for (LoadBalancer loadBalancer : loadBalancers) {
                if (loadBalancer.getTargetGroupArn() == null || containerInstance.getEc2InstanceId() == null) {
                    continue;
                }

                DescribeTargetHealthResult describeTargetHealthResult;
                describeTargetHealthResult = amazonloadBalancing.describeTargetHealth(
                        new DescribeTargetHealthRequest().withTargetGroupArn(loadBalancer.getTargetGroupArn())
                                .withTargets(new TargetDescription()
                                        .withId(containerInstance.getEc2InstanceId()).withPort(port)));

                if (describeTargetHealthResult.getTargetHealthDescriptions().size() == 0) {
                    String serviceEvictionKey = Keys.getTaskDefinitionKey(accountName, region,
                            service.getServiceName());
                    serviceEvicitions.add(serviceEvictionKey);
                    String taskEvictionKey = Keys.getTaskKey(accountName, region, task.getTaskId());
                    taskEvicitions.add(taskEvictionKey);

                    String taskDefArn = service.getTaskDefinition();
                    String taskDefKey = Keys.getTaskDefinitionKey(accountName, region, taskDefArn);
                    taskDefEvicitions.add(taskDefKey);
                    continue;
                }

                String targetHealth = describeTargetHealthResult.getTargetHealthDescriptions().get(0)
                        .getTargetHealth().getState();
                // TODO - Return better values, and think of a better strategy at defining health
                targetHealth = targetHealth.equals("healthy") ? "Up" : "Unknown";

                TaskHealth taskHealth = new TaskHealth();
                taskHealth.setType("loadBalancer");
                taskHealth.setState(targetHealth);
                taskHealth.setServiceName(serviceName);
                taskHealth.setTaskId(task.getTaskId());
                taskHealth.setTaskArn(task.getTaskArn());
                taskHealth.setInstanceId(task.getTaskArn());

                taskHealthList.add(taskHealth);
            }
        }
    }

    return taskHealthList;
}