Example usage for com.amazonaws.services.autoscaling.model AutoScalingGroup getMinSize

List of usage examples for com.amazonaws.services.autoscaling.model AutoScalingGroup getMinSize

Introduction

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

Prototype


public Integer getMinSize() 

Source Link

Document

The minimum size of the group.

Usage

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

License:Open Source License

private void buildUI(DescribeAutoScalingGroupsResult detail) {

    JTabbedPane tabs = new JTabbedPane();
    tabs.add("AS Group", primaryScrollPane);
    tabs.add("Tags", tagsScrollPane);

    this.add(tabs, BorderLayout.CENTER);

    List<AutoScalingGroup> groups = detail.getAutoScalingGroups();
    if (!groups.isEmpty()) {
        AutoScalingGroup group = groups.get(0);

        if (group.getAutoScalingGroupARN() != null) {
            primaryTableModel.addRow(new Object[] { "AutoScaling Group Arn", group.getAutoScalingGroupARN() });
        }/*from  w  ww . j  ava 2s. c  om*/
        if (group.getAutoScalingGroupName() != null) {
            primaryTableModel
                    .addRow(new Object[] { "AutoScaling Group Name", group.getAutoScalingGroupName() });
        }

        if (!group.getAvailabilityZones().isEmpty()) {

            StringBuilder azs = new StringBuilder();
            for (String az : group.getAvailabilityZones()) {
                azs.append(az).append(", ");
            }

            primaryTableModel.addRow(new Object[] { "Availability Zones", azs.toString() });
        }

        if (group.getCreatedTime() != null) {
            primaryTableModel.addRow(new Object[] { "Created", getDateString(group.getCreatedTime()) });
        }
        if (group.getDefaultCooldown() != null) {
            primaryTableModel.addRow(new Object[] { "Default Cooldown", group.getDefaultCooldown() });
        }
        if (group.getDesiredCapacity() != null) {
            primaryTableModel.addRow(new Object[] { "Desired Capacity", group.getDesiredCapacity() });
        }
        if (group.getHealthCheckGracePeriod() != null) {
            primaryTableModel
                    .addRow(new Object[] { "HealthCheck Grace Period", group.getHealthCheckGracePeriod() });
        }
        if (group.getHealthCheckType() != null) {
            primaryTableModel.addRow(new Object[] { "HealthCheck Type", group.getHealthCheckType() });
        }

        if (!group.getInstances().isEmpty()) {

            StringBuilder instances = new StringBuilder();
            for (Instance instance : group.getInstances()) {
                instances.append(instance.getInstanceId()).append(", ");
            }

            primaryTableModel.addRow(new Object[] { "Instances", instances.toString() });
        }

        if (group.getLaunchConfigurationName() != null) {
            primaryTableModel
                    .addRow(new Object[] { "Launch Configuration Name", group.getLaunchConfigurationName() });
        }

        if (!group.getLoadBalancerNames().isEmpty()) {

            StringBuilder instances = new StringBuilder();
            for (String instance : group.getLoadBalancerNames()) {
                instances.append(instance).append(", ");
            }

            primaryTableModel.addRow(new Object[] { "LoadBalancer names", instances.toString() });
        }

        if (group.getMaxSize() != null) {
            primaryTableModel.addRow(new Object[] { "Max Size", group.getMaxSize() });
        }
        if (group.getMinSize() != null) {
            primaryTableModel.addRow(new Object[] { "Min Size", group.getMinSize() });
        }
        if (group.getPlacementGroup() != null) {
            primaryTableModel.addRow(new Object[] { "Placement Group", group.getPlacementGroup() });
        }
        if (group.getVPCZoneIdentifier() != null) {
            primaryTableModel.addRow(new Object[] { "VPC Zone Identifier", group.getVPCZoneIdentifier() });
        }

        List<TagDescription> tags = group.getTags();
        for (TagDescription tag : tags) {
            tagsTableModel.addRow(new Object[] { tag.getKey(), tag.getValue() });
        }
    }
}

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

License:Apache License

@Override
public void expandRacMembership(int count) {
    AmazonAutoScaling client = null;//from w w  w  .  j  a va  2  s.  c o  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 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 w  w.j a v a 2s.  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;/*www  .  j  a  va 2s .  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 AutoScalingGroupBean getAutoScalingGroupInfoByName(String groupName) throws Exception {
    AutoScalingGroupBean asgInfo = generateDefaultASGInfo();
    AutoScalingGroup asgroup = getAutoScalingGroup(groupName);
    if (asgroup == null) {
        return asgInfo;
    }//from w  ww  .j  ava 2  s.  c o  m
    // 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());
    asgInfo.setDesiredCapacity(asgroup.getDesiredCapacity());
    // 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.AwsAutoScalingManager.java

License:Apache License

private void changeGroupCapacity(String groupName, int size, boolean increment) throws Exception {
    AutoScalingGroup group = getAutoScalingGroup(groupName);
    if (group == null) {
        return;/*from   w ww  .j  a  v a 2s  .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;/*from w  w  w  .  j a v a 2 s  . c  om*/
    }

    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 AwsVmBean getAutoScalingGroupInfo(String clusterName) throws Exception {
    AutoScalingGroup autoScalingGroup = getAutoScalingGroup(clusterName);
    if (autoScalingGroup == null) {
        LOG.warn(String.format("Failed to get cluster %s: auto scaling group %s does not exist", clusterName,
                clusterName));//from  w w  w  .  j  a v a 2s . c om
        return null;
    }

    AwsVmBean launchConfigInfo = getLaunchConfigInfo(autoScalingGroup.getLaunchConfigurationName());
    AwsVmBean awsVmBean = new AwsVmBean();
    awsVmBean.setClusterName(clusterName);
    awsVmBean.setImage(launchConfigInfo.getImage());
    awsVmBean.setHostType(launchConfigInfo.getHostType());
    awsVmBean.setSecurityZone(launchConfigInfo.getSecurityZone());
    awsVmBean.setAssignPublicIp(launchConfigInfo.getAssignPublicIp());
    awsVmBean.setLaunchConfigId(launchConfigInfo.getLaunchConfigId());
    awsVmBean.setRole(launchConfigInfo.getRole());
    awsVmBean.setUserDataConfigs(
            transformUserDataToConfigMap(clusterName, launchConfigInfo.getRawUserDataString()));
    awsVmBean.setSubnet(autoScalingGroup.getVPCZoneIdentifier());
    awsVmBean.setMinSize(autoScalingGroup.getMinSize());
    awsVmBean.setMaxSize(autoScalingGroup.getMaxSize());
    return awsVmBean;
}

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

License:Apache License

@Override
public AwsVmBean getCluster(String clusterName) throws Exception {
    AutoScalingGroup group = getAutoScalingGroup(clusterName);
    if (group == null) {
        LOG.warn(String.format("Failed to get cluster %s: auto scaling group %s does not exist", clusterName,
                clusterName));/*  ww  w  .j a va2 s  . co  m*/
        return null;
    }

    LaunchConfiguration config = getLaunchConfig(group.getLaunchConfigurationName());
    if (config == null) {
        LOG.warn(String.format("Failed to get cluster: Launch config %s does not exist",
                group.getLaunchConfigurationName()));
        return null;
    }

    AwsVmBean awsVmBean = new AwsVmBean();
    awsVmBean.setClusterName(clusterName);
    awsVmBean.setImage(config.getImageId());
    awsVmBean.setHostType(config.getInstanceType());
    awsVmBean.setSecurityZone(config.getSecurityGroups().get(0));
    awsVmBean.setAssignPublicIp(config.getAssociatePublicIpAddress());
    awsVmBean.setLaunchConfigId(config.getLaunchConfigurationName());
    String roleName = config.getIamInstanceProfile();
    awsVmBean.setRole(roleName.split("/")[1]);
    String userData = new String(Base64.decodeBase64(config.getUserData()));
    awsVmBean.setUserDataConfigs(transformUserDataToConfigMap(clusterName, userData));
    awsVmBean.setSubnet(group.getVPCZoneIdentifier());
    awsVmBean.setMinSize(group.getMinSize());
    awsVmBean.setMaxSize(group.getMaxSize());
    return awsVmBean;
}

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.  ja v  a 2s.co  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);
        }
    }
}