List of usage examples for com.amazonaws.services.applicationautoscaling.model DescribeScalableTargetsRequest DescribeScalableTargetsRequest
DescribeScalableTargetsRequest
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 w w w .ja v a 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 w w . jav a 2s . 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 w w w . ja v a 2 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); } }