Example usage for com.amazonaws.services.applicationautoscaling AWSApplicationAutoScaling describeScalableTargets

List of usage examples for com.amazonaws.services.applicationautoscaling AWSApplicationAutoScaling describeScalableTargets

Introduction

In this page you can find the example usage for com.amazonaws.services.applicationautoscaling AWSApplicationAutoScaling describeScalableTargets.

Prototype

DescribeScalableTargetsResult describeScalableTargets(
        DescribeScalableTargetsRequest describeScalableTargetsRequest);

Source Link

Document

Gets information about the scalable targets in the specified namespace.

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  .j  a  va2 s  .com*/

    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  va2s. c o  m
    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   w ww .  j  a va  2 s  . co  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);
    }
}