Example usage for com.amazonaws.services.applicationautoscaling.model DescribeScalableTargetsResult getScalableTargets

List of usage examples for com.amazonaws.services.applicationautoscaling.model DescribeScalableTargetsResult getScalableTargets

Introduction

In this page you can find the example usage for com.amazonaws.services.applicationautoscaling.model DescribeScalableTargetsResult getScalableTargets.

Prototype


public java.util.List<ScalableTarget> getScalableTargets() 

Source Link

Document

The scalable targets that match the request parameters.

Usage

From source file:com.netflix.spinnaker.clouddriver.ecs.deploy.ops.EnableServiceAtomicOperation.java

License:Apache License

private ScalableTarget getScalableTarget(String cluster) {
    AWSApplicationAutoScaling appASClient = getAmazonApplicationAutoScalingClient();

    List<String> resourceIds = new ArrayList<>();
    resourceIds.add(String.format("service/%s/%s", cluster, description.getServerGroupName()));

    DescribeScalableTargetsRequest request = new DescribeScalableTargetsRequest().withResourceIds(resourceIds)
            .withScalableDimension(ScalableDimension.EcsServiceDesiredCount)
            .withServiceNamespace(ServiceNamespace.Ecs);

    DescribeScalableTargetsResult result = appASClient.describeScalableTargets(request);

    if (result.getScalableTargets().isEmpty()) {
        return null;
    }//from ww  w .  java 2 s .  c o m

    if (result.getScalableTargets().size() == 1) {
        return result.getScalableTargets().get(0);
    }

    throw new Error("Multiple Scalable Targets found");
}

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

License:Apache License

Set<ScalableTarget> fetchScalableTargets(AWSApplicationAutoScaling autoScalingClient) {
    Set<ScalableTarget> scalableTargets = new HashSet<>();
    String nextToken = null;//from w ww  .  j a  v a  2 s.  c om
    do {
        DescribeScalableTargetsRequest request = new DescribeScalableTargetsRequest()
                .withServiceNamespace(ServiceNamespace.Ecs);
        if (nextToken != null) {
            request.setNextToken(nextToken);
        }

        DescribeScalableTargetsResult result = autoScalingClient.describeScalableTargets(request);
        scalableTargets.addAll(result.getScalableTargets());

        nextToken = result.getNextToken();
    } while (nextToken != null && nextToken.length() != 0);

    return scalableTargets;
}

From source file:com.netflix.spinnaker.clouddriver.ecs.services.EcsCloudMetricService.java

License:Apache License

private void deregisterScalableTargets(Set<String> resources, String account, String region) {
    AmazonCredentials credentials = (AmazonCredentials) accountCredentialsProvider.getCredentials(account);
    AWSApplicationAutoScaling autoScaling = amazonClientProvider.getAmazonApplicationAutoScaling(account,
            credentials.getCredentialsProvider(), region);

    Map<String, Set<String>> resourceMap = new HashMap<>();
    for (String resource : resources) {
        String namespace = StringUtils.substringBefore(resource, "/");
        String service = StringUtils.substringAfter(resource, "/");
        if (resourceMap.containsKey(namespace)) {
            resourceMap.get(namespace).add(service);
        } else {//from   ww w .  ja v a 2  s. c o  m
            Set<String> serviceSet = new HashSet<>();
            serviceSet.add(service);
            resourceMap.put(namespace, serviceSet);
        }
    }

    Set<DeregisterScalableTargetRequest> deregisterRequests = new HashSet<>();
    for (String namespace : resourceMap.keySet()) {
        String nextToken = null;
        do {
            DescribeScalableTargetsRequest request = new DescribeScalableTargetsRequest()
                    .withServiceNamespace(namespace).withResourceIds(resourceMap.get(namespace));

            if (nextToken != null) {
                request.setNextToken(nextToken);
            }

            DescribeScalableTargetsResult result = autoScaling.describeScalableTargets(request);

            deregisterRequests.addAll(result.getScalableTargets().stream()
                    .map(scalableTarget -> new DeregisterScalableTargetRequest()
                            .withResourceId(scalableTarget.getResourceId())
                            .withScalableDimension(scalableTarget.getScalableDimension())
                            .withServiceNamespace(scalableTarget.getServiceNamespace()))
                    .collect(Collectors.toSet()));

            nextToken = result.getNextToken();
        } while (nextToken != null && nextToken.length() != 0);
    }

    for (DeregisterScalableTargetRequest request : deregisterRequests) {
        autoScaling.deregisterScalableTarget(request);
    }
}