Example usage for com.amazonaws.services.applicationautoscaling.model ScalableTarget getMaxCapacity

List of usage examples for com.amazonaws.services.applicationautoscaling.model ScalableTarget getMaxCapacity

Introduction

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

Prototype


public Integer getMaxCapacity() 

Source Link

Document

The maximum value to scale to in response to a scale-out event.

Usage

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;
}