Example usage for com.amazonaws.services.autoscaling.model DeleteAutoScalingGroupRequest setForceDelete

List of usage examples for com.amazonaws.services.autoscaling.model DeleteAutoScalingGroupRequest setForceDelete

Introduction

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

Prototype


public void setForceDelete(Boolean forceDelete) 

Source Link

Document

Specifies that the group is to be deleted along with all instances associated with the group, without waiting for all instances to be terminated.

Usage

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;
        }/*  ww  w  .j  a  va2s. c om*/
        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.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 . ja v  a  2  s .  c  o  m*/
        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.clusterservice.cm.AwsVmManager.java

License:Apache License

private void deleteAutoScalingGroup(String clusterName) throws Exception {
    try {//from  ww  w.  jav  a 2  s .  c  o  m
        DeleteAutoScalingGroupRequest deleteRequest = new DeleteAutoScalingGroupRequest();
        deleteRequest.setAutoScalingGroupName(clusterName);
        deleteRequest.setForceDelete(true);
        aasClient.deleteAutoScalingGroup(deleteRequest);
    } catch (AmazonClientException e) {
        LOG.error(String.format("Failed to delete auto scaling group %s: %s", clusterName, e.getMessage()));
        throw new Exception(
                String.format("Failed to delete auto scaling group %s: %s", clusterName, e.getMessage()));
    }
}