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

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

Introduction

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

Prototype

DeregisterScalableTargetResult deregisterScalableTarget(
        DeregisterScalableTargetRequest deregisterScalableTargetRequest);

Source Link

Document

Deregisters an Application Auto Scaling scalable target.

Usage

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 {/* www  . j a  va2 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);
    }
}