Example usage for com.amazonaws.services.autoscaling.model DescribeAutoScalingGroupsRequest setAutoScalingGroupNames

List of usage examples for com.amazonaws.services.autoscaling.model DescribeAutoScalingGroupsRequest setAutoScalingGroupNames

Introduction

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

Prototype


public void setAutoScalingGroupNames(java.util.Collection<String> autoScalingGroupNames) 

Source Link

Document

The names of the Auto Scaling groups.

Usage

From source file:com.haskins.cloudtrailviewer.dialog.resourcedetail.detailpanels.AsGroupDetail.java

License:Open Source License

@Override
public String retrieveDetails(ResourceDetailRequest detailRequest) {

    String response = null;//from  w  ww .j a  va 2 s .  c o  m

    try {

        AmazonAutoScaling asClient = new AmazonAutoScalingClient(credentials);
        asClient.setRegion(Region.getRegion(Regions.fromName(detailRequest.getRegion())));

        DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest();
        request.setAutoScalingGroupNames(Collections.singletonList(detailRequest.getResourceName()));

        DescribeAutoScalingGroupsResult result = asClient.describeAutoScalingGroups(request);
        buildUI(result);

    } catch (IllegalArgumentException | AmazonClientException e) {
        LOGGER.log(Level.WARNING, "Problem retrieving AS detail from AWS", e);
        response = e.getMessage();
    }

    return response;
}

From source file:com.netflix.simianarmy.client.aws.AWSClient.java

License:Apache License

/**
 * Describe a set of specific auto scaling groups.
 *
 * @param names the ASG names/* w ww. j  a va2 s .  co  m*/
 * @return the auto scaling groups
 */
public List<AutoScalingGroup> describeAutoScalingGroups(String... names) {
    if (names == null || names.length == 0) {
        LOGGER.info(String.format("Getting all auto-scaling groups in region %s.", region));
    } else {
        LOGGER.info(
                String.format("Getting auto-scaling groups for %d names in region %s.", names.length, region));
    }

    List<AutoScalingGroup> asgs = new LinkedList<AutoScalingGroup>();

    AmazonAutoScalingClient asgClient = asgClient();
    DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest();
    if (names != null) {
        request.setAutoScalingGroupNames(Arrays.asList(names));
    }
    DescribeAutoScalingGroupsResult result = asgClient.describeAutoScalingGroups(request);

    asgs.addAll(result.getAutoScalingGroups());
    while (result.getNextToken() != null) {
        request.setNextToken(result.getNextToken());
        result = asgClient.describeAutoScalingGroups(request);
        asgs.addAll(result.getAutoScalingGroups());
    }

    LOGGER.info(String.format("Got %d auto-scaling groups in region %s.", asgs.size(), region));
    return asgs;
}

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  ww. j a v  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 AutoScalingGroupBean getAutoScalingGroupInfoByName(String groupName) throws Exception {
    AutoScalingGroupBean asgInfo = generateDefaultASGInfo();
    DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest();
    request.setAutoScalingGroupNames(Arrays.asList(groupName));
    DescribeAutoScalingGroupsResult result = aasClient.describeAutoScalingGroups(request);
    List<AutoScalingGroup> asgroups = result.getAutoScalingGroups();

    if (asgroups.isEmpty()) {
        return asgInfo;
    }//from  w  ww .j a  v  a 2 s. c  o m

    AutoScalingGroup asgroup = asgroups.get(0);
    // set autoscaling group status
    List<SuspendedProcess> suspendedProcesses = asgroup.getSuspendedProcesses();
    HashSet<String> processName = new HashSet<>();
    for (SuspendedProcess process : suspendedProcesses) {
        processName.add(process.getProcessName());
    }
    if (processName.contains(PROCESS_ALARMNOTIFICATION) && processName.contains(PROCESS_SCHEDULEDACTIONS)) {
        asgInfo.setStatus(ASGStatus.DISABLED);
    } else {
        asgInfo.setStatus(ASGStatus.ENABLED);
    }

    asgInfo.setMinSize(asgroup.getMinSize());
    asgInfo.setMaxSize(asgroup.getMaxSize());
    // TODO this is dangerous that we are using the same value of TerminationPolicy
    String policy = asgroup.getTerminationPolicies().isEmpty() ? "Default"
            : new String(asgroup.getTerminationPolicies().get(0).getBytes());
    asgInfo.setTerminationPolicy(
            AutoScalingTerminationPolicy.valueOf(AutoScalingTerminationPolicy.class, policy));

    List<Instance> instances = asgroup.getInstances();
    for (Instance instance : instances) {
        if (instance.getInstanceId() != null) {
            asgInfo.addToInstances(instance.getInstanceId());
        }
    }
    return asgInfo;
}

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.AwsAutoScaleGroupManager.java

License:Apache License

@Override
public void increaseASGDesiredCapacityBySize(String groupName, int instanceCnt) 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  . jav a  2 s  .c  o m*/
    }

    AutoScalingGroup group = groups.get(0);
    int curCapacity = group.getDesiredCapacity();

    UpdateAutoScalingGroupRequest updateRequest = new UpdateAutoScalingGroupRequest();
    updateRequest.setAutoScalingGroupName(groupName);
    updateRequest.setDesiredCapacity(curCapacity + instanceCnt);
    updateRequest.setMaxSize(Math.max(group.getMaxSize(), curCapacity + instanceCnt));
    aasClient.updateAutoScalingGroup(updateRequest);
}

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

License:Apache License

@Override
public ASGStatus getAutoScalingGroupStatus(String groupName) throws Exception {
    DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest();
    List<String> groupNames = new ArrayList<>();
    groupNames.add(groupName);/*from   w w w.  j ava2  s  .  co m*/
    request.setAutoScalingGroupNames(groupNames);
    DescribeAutoScalingGroupsResult result = aasClient.describeAutoScalingGroups(request);
    List<AutoScalingGroup> groups = result.getAutoScalingGroups();
    if (groups.isEmpty()) {
        return ASGStatus.UNKNOWN;
    }

    AutoScalingGroup group = groups.get(0);
    List<SuspendedProcess> suspendedProcesses = group.getSuspendedProcesses();
    HashSet<String> processName = new HashSet<>();
    for (SuspendedProcess process : suspendedProcesses) {
        processName.add(process.getProcessName());
    }
    if (processName.contains(PROCESS_ALARMNOTIFICATION) && processName.contains(PROCESS_SCHEDULEDACTIONS)) {
        return ASGStatus.DISABLED;
    } else {
        return ASGStatus.ENABLED;
    }
}

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

License:Apache License

@Override
public boolean isScalingDownEventEnabled(String groupName) 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 false;
    }//  w ww  .j av a 2s .com

    AutoScalingGroup group = groups.get(0);
    List<SuspendedProcess> suspendedProcesses = group.getSuspendedProcesses();
    for (SuspendedProcess process : suspendedProcesses) {
        if (process.getProcessName().equals(PROCESS_TERMINATE)) {
            return false;
        }
    }
    return true;
}

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 va  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.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;/*w w w.j ava  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);
}