List of usage examples for com.amazonaws.services.applicationautoscaling.model ScalableTarget getMaxCapacity
public Integer getMaxCapacity()
The maximum value to scale to in response to a scale-out event.
From source file:com.netflix.spinnaker.clouddriver.ecs.deploy.ops.EnableServiceAtomicOperation.java
License:Apache License
private Integer getMaxCapacity(String cluster) { ScalableTarget target = getScalableTarget(cluster); if (target != null) { return target.getMaxCapacity(); }//from w ww .j a v a 2 s .c om return 1; }
From source file:com.netflix.spinnaker.clouddriver.ecs.provider.view.EcsServerClusterProvider.java
License:Apache License
private ServerGroup.Capacity buildServerGroupCapacity(int desiredCount, ScalableTarget target) { ServerGroup.Capacity capacity = new ServerGroup.Capacity(); capacity.setDesired(desiredCount);// w w w .j a v a 2 s . c o m if (target != null) { capacity.setMin(target.getMinCapacity()); capacity.setMax(target.getMaxCapacity()); } else { //TODO: Min/Max should be based on (desired count * min/max precent). capacity.setMin(desiredCount); capacity.setMax(desiredCount); } return capacity; }
From source file:com.netflix.spinnaker.clouddriver.ecs.provider.view.EcsServerClusterProvider.java
License:Apache License
private EcsServerGroup buildEcsServerGroup(String account, String region, String serviceName, int desiredCount, Set<Instance> instances, long creationTime, String ecsCluster, com.amazonaws.services.ecs.model.TaskDefinition taskDefinition) { ServerGroup.InstanceCounts instanceCounts = buildInstanceCount(instances); TaskDefinition ecsTaskDefinition = buildTaskDefinition(taskDefinition); String scalableTargetId = "service/" + ecsCluster + "/" + serviceName; String scalableTargetKey = Keys.getScalableTargetKey(account, region, scalableTargetId); ScalableTarget scalableTarget = scalableTargetCacheClient.get(scalableTargetKey); if (scalableTarget == null) { return null; }// w ww . j a v a2s . c o m ServerGroup.Capacity capacity = buildServerGroupCapacity(desiredCount, scalableTarget); String vpcId = "None"; //ENI will change the way VPCs are handled. Set<String> securityGroups = new HashSet<>(); if (!instances.isEmpty()) { String taskId = instances.iterator().next().getName(); String taskKey = Keys.getTaskKey(account, region, taskId); Task task = taskCacheClient.get(taskKey); com.amazonaws.services.ec2.model.Instance ec2Instance = containerInformationService .getEc2Instance(account, region, task); vpcId = ec2Instance.getVpcId(); securityGroups = ec2Instance.getSecurityGroups().stream().map(GroupIdentifier::getGroupId) .collect(Collectors.toSet()); } Set<String> metricAlarmNames = ecsCloudWatchAlarmCacheClient.getMetricAlarms(serviceName, account, region) .stream().map(EcsMetricAlarm::getAlarmName).collect(Collectors.toSet()); EcsServerGroup serverGroup = new EcsServerGroup().setDisabled(capacity.getDesired() == 0) .setName(serviceName).setCloudProvider(EcsCloudProvider.ID).setType(EcsCloudProvider.ID) .setRegion(region).setInstances(instances).setCapacity(capacity).setInstanceCounts(instanceCounts) .setCreatedTime(creationTime).setEcsCluster(ecsCluster).setTaskDefinition(ecsTaskDefinition) .setVpcId(vpcId).setSecurityGroups(securityGroups).setMetricAlarms(metricAlarmNames); EcsServerGroup.AutoScalingGroup asg = new EcsServerGroup.AutoScalingGroup() .setDesiredCapacity(scalableTarget.getMaxCapacity()).setMaxSize(scalableTarget.getMaxCapacity()) .setMinSize(scalableTarget.getMinCapacity()); // TODO: Update Deck to handle an asg. Current Deck implementation uses a EC2 AutoScaling Group //serverGroup.setAsg(asg); return serverGroup; }