Example usage for com.amazonaws.services.applicationautoscaling.model DeregisterScalableTargetRequest DeregisterScalableTargetRequest

List of usage examples for com.amazonaws.services.applicationautoscaling.model DeregisterScalableTargetRequest DeregisterScalableTargetRequest

Introduction

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

Prototype

DeregisterScalableTargetRequest

Source Link

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 {/*from ww  w . ja v  a2  s .  c om*/
            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);
    }
}