Example usage for com.amazonaws.services.autoscaling.model UpdateAutoScalingGroupRequest setMinSize

List of usage examples for com.amazonaws.services.autoscaling.model UpdateAutoScalingGroupRequest setMinSize

Introduction

In this page you can find the example usage for com.amazonaws.services.autoscaling.model UpdateAutoScalingGroupRequest setMinSize.

Prototype


public void setMinSize(Integer minSize) 

Source Link

Document

The minimum size of the Auto Scaling group.

Usage

From source file:com.netflix.dynomitemanager.sidecore.aws.AWSMembership.java

License:Apache License

@Override
public void expandRacMembership(int count) {
    AmazonAutoScaling client = null;/*  w  w w  . java  2s.  co m*/
    try {
        client = getAutoScalingClient();
        DescribeAutoScalingGroupsRequest asgReq = new DescribeAutoScalingGroupsRequest()
                .withAutoScalingGroupNames(config.getASGName());
        DescribeAutoScalingGroupsResult res = client.describeAutoScalingGroups(asgReq);
        AutoScalingGroup asg = res.getAutoScalingGroups().get(0);
        UpdateAutoScalingGroupRequest ureq = new UpdateAutoScalingGroupRequest();
        ureq.setAutoScalingGroupName(asg.getAutoScalingGroupName());
        ureq.setMinSize(asg.getMinSize() + 1);
        ureq.setMaxSize(asg.getMinSize() + 1);
        ureq.setDesiredCapacity(asg.getMinSize() + 1);
        client.updateAutoScalingGroup(ureq);
    } finally {
        if (client != null)
            client.shutdown();
    }
}

From source file:com.pinterest.arcee.autoscaling.AwsAutoScaleGroupManager.java

License:Apache License

@Override
public void deleteAutoScalingGroup(String groupName, boolean detachInstances) throws Exception {
    // step 1: get the auto scaling instances information
    if (detachInstances) {
        DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest();
        request.setAutoScalingGroupNames(Arrays.asList(groupName));
        DescribeAutoScalingGroupsResult result = aasClient.describeAutoScalingGroups(request);
        List<AutoScalingGroup> groups = result.getAutoScalingGroups();
        if (groups.isEmpty()) {
            return;
        }/*from   w  w  w .  j av  a 2 s  .  c o m*/
        AutoScalingGroup group = groups.get(0);

        List<Instance> instances = group.getInstances();
        List<String> ids = new LinkedList<>();
        for (Instance instance : instances) {
            ids.add(instance.getInstanceId());
        }

        // step 2: update the autoscaling min size to 0
        UpdateAutoScalingGroupRequest updateAutoScalingGroupRequest = new UpdateAutoScalingGroupRequest();
        updateAutoScalingGroupRequest.setAutoScalingGroupName(groupName);
        updateAutoScalingGroupRequest.setMinSize(0);
        aasClient.updateAutoScalingGroup(updateAutoScalingGroupRequest);

        // step 3: detach instances from auto scaling group
        if (!ids.isEmpty()) {
            for (int i = 0; i < ids.size(); i += MAX_DETACH_INSTANCE_LENGTH) {
                DetachInstancesRequest detachInstancesRequest = new DetachInstancesRequest();
                detachInstancesRequest.setAutoScalingGroupName(groupName);
                detachInstancesRequest.setShouldDecrementDesiredCapacity(true);
                detachInstancesRequest
                        .setInstanceIds(ids.subList(i, Math.min(i + MAX_DETACH_INSTANCE_LENGTH, ids.size())));
                aasClient.detachInstances(detachInstancesRequest);
            }
        }
    }

    // step 4 delete auto scaling group
    DeleteAutoScalingGroupRequest deleteAutoScalingGroupRequest = new DeleteAutoScalingGroupRequest();
    deleteAutoScalingGroupRequest.setAutoScalingGroupName(groupName);
    deleteAutoScalingGroupRequest.setForceDelete(true);
    aasClient.deleteAutoScalingGroup(deleteAutoScalingGroupRequest);
}

From source file:com.pinterest.arcee.autoscaling.AwsAutoScaleGroupManager.java

License:Apache License

@Override
public void detachInstancesFromAutoScalingGroup(Collection<String> instances, String groupName,
        boolean decreaseSize) throws Exception {
    DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest();
    request.setAutoScalingGroupNames(Arrays.asList(groupName));
    DescribeAutoScalingGroupsResult result = aasClient.describeAutoScalingGroups(request);
    List<AutoScalingGroup> groups = result.getAutoScalingGroups();
    if (groups.isEmpty()) {
        return;/*from   w  w  w . j a v a 2 s.  c  o  m*/
    }

    AutoScalingGroup group = groups.get(0);
    int curCapacity = group.getDesiredCapacity();
    int minSize = group.getMinSize();
    if (decreaseSize && (curCapacity == minSize)) {
        UpdateAutoScalingGroupRequest updateRequest = new UpdateAutoScalingGroupRequest();
        updateRequest.setAutoScalingGroupName(groupName);
        updateRequest.setMinSize(minSize - 1);
        aasClient.updateAutoScalingGroup(updateRequest);
    }

    DetachInstancesRequest detachInstancesRequest = new DetachInstancesRequest();
    detachInstancesRequest.withAutoScalingGroupName(groupName).setInstanceIds(instances);
    detachInstancesRequest.setShouldDecrementDesiredCapacity(decreaseSize);
    aasClient.detachInstances(detachInstancesRequest);
}

From source file:com.pinterest.arcee.autoscaling.AwsAutoScalingManager.java

License:Apache License

@Override
public void deleteAutoScalingGroup(String groupName, boolean detachInstances) throws Exception {
    // step 1: get the auto scaling instances information
    if (detachInstances) {
        DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest();
        request.setAutoScalingGroupNames(Arrays.asList(groupName));
        DescribeAutoScalingGroupsResult result = aasClient.describeAutoScalingGroups(request);
        List<AutoScalingGroup> groups = result.getAutoScalingGroups();
        if (groups.isEmpty()) {
            return;
        }/*from   w w  w . j ava2  s  .  c om*/
        AutoScalingGroup group = groups.get(0);
        List<Instance> instances = group.getInstances();
        List<String> ids = new ArrayList<>();
        for (Instance instance : instances) {
            ids.add(instance.getInstanceId());
        }

        // step 2: update the autoscaling min size to 0
        UpdateAutoScalingGroupRequest updateAutoScalingGroupRequest = new UpdateAutoScalingGroupRequest();
        updateAutoScalingGroupRequest.setAutoScalingGroupName(groupName);
        updateAutoScalingGroupRequest.setMinSize(0);
        aasClient.updateAutoScalingGroup(updateAutoScalingGroupRequest);

        // step 3: detach instances from auto scaling group
        if (!ids.isEmpty()) {
            for (int i = 0; i < ids.size(); i += MAX_DETACH_INSTANCE_LENGTH) {
                DetachInstancesRequest detachInstancesRequest = new DetachInstancesRequest();
                detachInstancesRequest.setAutoScalingGroupName(groupName);
                detachInstancesRequest.setShouldDecrementDesiredCapacity(true);
                detachInstancesRequest
                        .setInstanceIds(ids.subList(i, Math.min(i + MAX_DETACH_INSTANCE_LENGTH, ids.size())));
                aasClient.detachInstances(detachInstancesRequest);
            }
        }
    }

    // step 4 delete auto scaling group
    DeleteAutoScalingGroupRequest deleteAutoScalingGroupRequest = new DeleteAutoScalingGroupRequest();
    deleteAutoScalingGroupRequest.setAutoScalingGroupName(groupName);
    deleteAutoScalingGroupRequest.setForceDelete(true);
    aasClient.deleteAutoScalingGroup(deleteAutoScalingGroupRequest);
}

From source file:com.pinterest.arcee.autoscaling.AwsAutoScalingManager.java

License:Apache License

@Override
public void updateAutoScalingGroup(String groupName, AwsVmBean request) throws Exception {
    UpdateAutoScalingGroupRequest updateAutoScalingGroupRequest = new UpdateAutoScalingGroupRequest();
    updateAutoScalingGroupRequest.setAutoScalingGroupName(groupName);
    if (!StringUtils.isEmpty(request.getLaunchConfigId())) {
        updateAutoScalingGroupRequest.setLaunchConfigurationName(request.getLaunchConfigId());
    }/*  ww  w .  j a  va 2 s.  c  o m*/

    if (!StringUtils.isEmpty(request.getSubnet())) {
        updateAutoScalingGroupRequest.setVPCZoneIdentifier(request.getSubnet());
    }

    if (!StringUtils.isEmpty(request.getTerminationPolicy())) {
        updateAutoScalingGroupRequest
                .setTerminationPolicies(Collections.singletonList(request.getTerminationPolicy()));
    }

    if (request.getMinSize() != null) {
        updateAutoScalingGroupRequest.setMinSize(request.getMinSize());
    }
    if (request.getMaxSize() != null) {
        updateAutoScalingGroupRequest.setMaxSize(request.getMaxSize());
    }
    aasClient.updateAutoScalingGroup(updateAutoScalingGroupRequest);
}

From source file:com.pinterest.arcee.autoscaling.AwsAutoScalingManager.java

License:Apache License

private void changeGroupCapacity(String groupName, int size, boolean increment) throws Exception {
    AutoScalingGroup group = getAutoScalingGroup(groupName);
    if (group == null) {
        return;/*ww  w . ja  v a2s.  c  o m*/
    }

    int currCapacity = group.getDesiredCapacity();
    int currMinSize = group.getMinSize();
    int currMaxSize = group.getMaxSize();
    if (increment) {
        currCapacity += size;
        if (currMaxSize == currMinSize) {
            currMinSize = currCapacity;
            currMaxSize = currCapacity;
        } else {
            currMaxSize = Math.max(currMaxSize, currCapacity);
        }
    } else {
        currCapacity = Math.max(currCapacity - size, 0);
        if (currMaxSize == currMinSize) {
            currMinSize = currCapacity;
            currMaxSize = currCapacity;
        } else {
            currMinSize = Math.min(currMinSize, currCapacity);
        }
    }

    UpdateAutoScalingGroupRequest updateRequest = new UpdateAutoScalingGroupRequest();
    updateRequest.setAutoScalingGroupName(groupName);
    updateRequest.setDesiredCapacity(currCapacity);
    updateRequest.setMaxSize(currMaxSize);
    updateRequest.setMinSize(currMinSize);
    aasClient.updateAutoScalingGroup(updateRequest);
}

From source file:com.pinterest.arcee.autoscaling.AwsAutoScalingManager.java

License:Apache License

@Override
public void detachInstancesFromAutoScalingGroup(Collection<String> instances, String groupName,
        boolean decreaseSize) throws Exception {
    DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest();
    request.setAutoScalingGroupNames(Collections.singletonList(groupName));
    DescribeAutoScalingGroupsResult result = aasClient.describeAutoScalingGroups(request);
    List<AutoScalingGroup> groups = result.getAutoScalingGroups();
    if (groups.isEmpty()) {
        return;//ww w  . jav a 2 s . com
    }

    AutoScalingGroup group = groups.get(0);
    int curCapacity = group.getDesiredCapacity();
    int minSize = group.getMinSize();
    if (decreaseSize && (curCapacity == minSize)) {
        UpdateAutoScalingGroupRequest updateRequest = new UpdateAutoScalingGroupRequest();
        updateRequest.setAutoScalingGroupName(groupName);
        updateRequest.setMinSize(minSize - 1);
        aasClient.updateAutoScalingGroup(updateRequest);
    }

    DetachInstancesRequest detachInstancesRequest = new DetachInstancesRequest();
    detachInstancesRequest.withAutoScalingGroupName(groupName).setInstanceIds(instances);
    detachInstancesRequest.setShouldDecrementDesiredCapacity(decreaseSize);
    aasClient.detachInstances(detachInstancesRequest);
}

From source file:com.pinterest.clusterservice.cm.AwsVmManager.java

License:Apache License

@Override
public void terminateHosts(String clusterName, Collection<String> hostIds, boolean replaceHost)
        throws Exception {
    if (replaceHost) {
        TerminateInstancesRequest termianteRequest = new TerminateInstancesRequest();
        termianteRequest.setInstanceIds(hostIds);
        try {//from w w  w.  j av a2 s  . c o m
            ec2Client.terminateInstances(termianteRequest);
        } catch (AmazonClientException e) {
            LOG.error(String.format("Failed to termiante hosts %s: %s", hostIds.toString(), e.getMessage()));
            throw new Exception(
                    String.format("Failed to termiante hosts %s: %s", hostIds.toString(), e.getMessage()));
        }
    } else {
        // Do not replace host and decrease the cluster capacity
        AutoScalingGroup group = getAutoScalingGroup(clusterName);
        if (group == null) {
            LOG.error(String.format("Failed to terminate hosts: auto scaling group %s does not exist",
                    clusterName));
            throw new Exception(String.format("Failed to terminate hosts: auto scaling group %s does not exist",
                    clusterName));
        }

        UpdateAutoScalingGroupRequest updateRequest = new UpdateAutoScalingGroupRequest();
        updateRequest.setAutoScalingGroupName(clusterName);
        updateRequest.setMinSize(Math.max(group.getMinSize() - hostIds.size(), 0));

        for (String hostId : hostIds) {
            TerminateInstanceInAutoScalingGroupRequest terminateRequest = new TerminateInstanceInAutoScalingGroupRequest();
            terminateRequest.setShouldDecrementDesiredCapacity(true);
            terminateRequest.setInstanceId(hostId);
            aasClient.terminateInstanceInAutoScalingGroup(terminateRequest);
        }
    }
}

From source file:com.pinterest.clusterservice.cm.AwsVmManager.java

License:Apache License

private void updateAutoScalingGroup(String clusterName, AwsVmBean newBean) throws Exception {
    try {/*from   w  ww .java 2 s . c om*/
        UpdateAutoScalingGroupRequest updateAsgRequest = new UpdateAutoScalingGroupRequest();
        updateAsgRequest.setAutoScalingGroupName(clusterName);
        if (newBean.getSubnet() != null) {
            updateAsgRequest.setVPCZoneIdentifier(newBean.getSubnet());
        }

        if (newBean.getMinSize() != null) {
            updateAsgRequest.setMinSize(newBean.getMinSize());
        }

        if (newBean.getMaxSize() != null) {
            updateAsgRequest.setMaxSize(newBean.getMaxSize());
        }

        if (newBean.getLaunchConfigId() != null) {
            updateAsgRequest.setLaunchConfigurationName(newBean.getLaunchConfigId());
        }
        aasClient.updateAutoScalingGroup(updateAsgRequest);
    } catch (AmazonClientException e) {
        LOG.error(String.format("Failed to update auto scaling group %s: %s", clusterName, e.getMessage()));
        throw new Exception(
                String.format("Failed to update auto scaling group %s: %s", clusterName, e.getMessage()));
    }
}

From source file:tools.descartes.bungee.cloud.aws.AWSImpl.java

License:Apache License

public boolean setScalingBounds(String hostName, Bounds bounds) {
    boolean success = false;
    AutoScalingGroup group = getAutoScaleGroupForHostName(hostName);
    if (group != null) {
        UpdateAutoScalingGroupRequest request = new UpdateAutoScalingGroupRequest()
                .withAutoScalingGroupName(group.getAutoScalingGroupName());
        request.setMinSize(bounds.getMin());
        request.setMaxSize(bounds.getMax());
        autoScale.updateAutoScalingGroup(request);
        success = bounds.equals(getScalingBounds(hostName));
    }// ww w  .j a v  a 2  s  .c  o m
    return success;
}