Example usage for com.amazonaws.services.autoscaling.model AutoScalingInstanceDetails getAutoScalingGroupName

List of usage examples for com.amazonaws.services.autoscaling.model AutoScalingInstanceDetails getAutoScalingGroupName

Introduction

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

Prototype


public String getAutoScalingGroupName() 

Source Link

Document

The name of the Auto Scaling group for the instance.

Usage

From source file:com.netflix.simianarmy.aws.janitor.crawler.InstanceJanitorCrawler.java

License:Apache License

private String getAsgName(Resource instanceResource, Map<String, AutoScalingInstanceDetails> idToASGInstance) {
    String asgName = instanceResource.getTag("aws:autoscaling:groupName");
    if (asgName == null) {
        // At most times the aws:autoscaling:groupName tag has the ASG name, but there are cases
        // that the instance is not correctly tagged and we can find the ASG name from AutoScaling
        // service.
        AutoScalingInstanceDetails instanceDetails = idToASGInstance.get(instanceResource.getId());
        if (instanceDetails != null) {
            asgName = instanceDetails.getAutoScalingGroupName();
        }/*from w w w.java 2  s.co m*/
    }
    return asgName;
}

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

License:Apache License

@Override
public Collection<String> getAutoScalingInstances(String groupName, Collection<String> hostIds)
        throws Exception {
    Collection<String> asgHostIds = new ArrayList<>();
    DescribeAutoScalingInstancesRequest asgInstancesRequest = new DescribeAutoScalingInstancesRequest();
    asgInstancesRequest.setInstanceIds(hostIds);
    DescribeAutoScalingInstancesResult asgInstancesResult = aasClient
            .describeAutoScalingInstances(asgInstancesRequest);
    List<AutoScalingInstanceDetails> instanceDetails = asgInstancesResult.getAutoScalingInstances();
    for (AutoScalingInstanceDetails instanceDetail : instanceDetails) {
        if (instanceDetail.getAutoScalingGroupName().equals(groupName)) {
            asgHostIds.add(instanceDetail.getInstanceId());
        }//from w ww . ja  va 2 s .  c o  m
    }
    return asgHostIds;
}

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

License:Apache License

@Override
public Collection<String> getHosts(String clusterName, Collection<String> hostIds) throws Exception {
    Collection<String> asgHostIds = new ArrayList<>();
    if (hostIds == null || hostIds.isEmpty()) {
        AutoScalingGroup group = getAutoScalingGroup(clusterName);
        List<Instance> asgInstances = group.getInstances();
        for (Instance asgInstance : asgInstances) {
            asgHostIds.add(asgInstance.getInstanceId());
        }/*w w  w . j a  v a2 s .  c  om*/
    } else {
        DescribeAutoScalingInstancesRequest asgInstancesRequest = new DescribeAutoScalingInstancesRequest();
        asgInstancesRequest.setInstanceIds(hostIds);
        DescribeAutoScalingInstancesResult asgInstancesResult = aasClient
                .describeAutoScalingInstances(asgInstancesRequest);
        List<AutoScalingInstanceDetails> instanceDetails = asgInstancesResult.getAutoScalingInstances();
        for (AutoScalingInstanceDetails instanceDetail : instanceDetails) {
            if (instanceDetail.getAutoScalingGroupName().equals(clusterName)) {
                asgHostIds.add(instanceDetail.getInstanceId());
            }
        }
    }
    return asgHostIds;
}

From source file:de.tuhrig.deployman.launch.Launcher.java

/**
 * Starts a auto scaling launch configuration. This method is a little but complicated, since the
 * process to start a auto scaling configuration involves some steps: - create a launch
 * configuration which defines the machines to start - create an auto scaling definition which
 * defines how many machines should be started if something happens. - create an auto scaling
 * policy to which we add a metric - create the metric which is checked by the auto scaling -
 * print the starting instances/*from   ww  w.j a v a  2s .c  o m*/
 */
private List<Instance> runAutoScalingLaunch(Formation formation) {
    this.console.write("Run auto scaling...");

    Machine machine = formation.getMachine();
    Scaling scaling = machine.getScaling();

    AmazonAutoScalingClient autoScaling = new AutoScaling().getClient();

    try {
        CreateLaunchConfigurationRequest request = createLaunchConfigurationRequest(formation);
        autoScaling.createLaunchConfiguration(request);
        this.console.write("Created launch configuration " + scaling.getName());
    } catch (AlreadyExistsException e) {
        this.console.write("Launch configuration " + scaling.getName() + " already exists"); //$NON-NLS-2$
    }

    //
    //
    //

    try {
        CreateAutoScalingGroupRequest request = createAutoScalingRequest(scaling);
        autoScaling.createAutoScalingGroup(request);
        this.console.write("Created auto scaling group " + scaling.getGroup());
    } catch (AlreadyExistsException e) {
        this.console.write("Auto scaling group " + scaling.getGroup() + " already exists"); //$NON-NLS-2$
    }

    //
    //
    //

    PutScalingPolicyRequest request = new PutScalingPolicyRequest().withAutoScalingGroupName(scaling.getGroup())
            .withPolicyName(scaling.getPolicy()).withScalingAdjustment(1)
            .withAdjustmentType("ChangeInCapacity");

    PutScalingPolicyResult result = autoScaling.putScalingPolicy(request);

    this.console.write("Put scaling policy " + scaling.getPolicy());

    //
    //
    //

    // Scale Up

    Dimension dimension = new Dimension().withName("AutoScalingGroupName").withValue(scaling.getGroup());

    List<String> actions = new ArrayList<>();
    actions.add(result.getPolicyARN());

    PutMetricAlarmRequest upRequest = new PutMetricAlarmRequest().withAlarmName(scaling.getAlarm())
            .withMetricName("CPUUtilization").withDimensions(dimension).withNamespace("AWS/EC2")
            .withComparisonOperator(ComparisonOperator.GreaterThanThreshold).withStatistic(Statistic.Average)
            .withUnit(StandardUnit.Percent).withThreshold(60d).withPeriod(300).withEvaluationPeriods(2)
            .withAlarmActions(actions);

    AmazonCloudWatchClient cloudWatch = new CloudWatch().getClient();
    cloudWatch.putMetricAlarm(upRequest);

    this.console.write("Put alarm " + scaling.getAlarm());
    this.console.newLine();

    List<Instance> instances = new ArrayList<>();

    for (AutoScalingInstanceDetails instance : autoScaling.describeAutoScalingInstances()
            .getAutoScalingInstances()) {

        if (instance.getAutoScalingGroupName().equals(scaling.getGroup())) {

            instances.add(new Ec2().getEC2InstanceById(instance.getInstanceId()));
        }
    }

    return instances;
}

From source file:dsmwatcher.DSMWatcher.java

License:Open Source License

public void handleAutoScaledInstance(Instance instance) throws Exception {
    AmazonAutoScalingClient as = new AmazonAutoScalingClient().withRegion(region);
    DescribeAutoScalingInstancesResult describeResult = as.describeAutoScalingInstances(
            new DescribeAutoScalingInstancesRequest().withInstanceIds(instance.getInstanceId()));
    if (describeResult.getAutoScalingInstances().size() == 0) {
        return;//from w  w w.ja  v a  2  s .co m
    }
    AutoScalingInstanceDetails instanceDetails = describeResult.getAutoScalingInstances().get(0);
    DetachInstancesRequest detachRequest = new DetachInstancesRequest()
            .withInstanceIds(instanceDetails.getInstanceId())
            .withAutoScalingGroupName(instanceDetails.getAutoScalingGroupName())
            .withShouldDecrementDesiredCapacity(false);
    as.detachInstances(detachRequest);
}