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

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

Introduction

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

Prototype


public String getInstanceId() 

Source Link

Document

The ID of the instance.

Usage

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

License:Apache License

private List<Resource> getInstanceResources(String... instanceIds) {
    List<Resource> resources = new LinkedList<Resource>();

    AWSClient awsClient = getAWSClient();
    Map<String, AutoScalingInstanceDetails> idToASGInstance = new HashMap<String, AutoScalingInstanceDetails>();
    for (AutoScalingInstanceDetails instanceDetails : awsClient.describeAutoScalingInstances(instanceIds)) {
        idToASGInstance.put(instanceDetails.getInstanceId(), instanceDetails);
    }/*from w  ww  . j  a v a2 s  .c om*/

    for (Instance instance : awsClient.describeInstances(instanceIds)) {
        Resource instanceResource = new AWSResource().withId(instance.getInstanceId())
                .withRegion(getAWSClient().region()).withResourceType(AWSResourceType.INSTANCE)
                .withLaunchTime(instance.getLaunchTime());
        for (Tag tag : instance.getTags()) {
            instanceResource.setTag(tag.getKey(), tag.getValue());
        }
        String description = String.format("type=%s; host=%s", instance.getInstanceType(),
                instance.getPublicDnsName() == null ? "" : instance.getPublicDnsName());
        instanceResource.setDescription(description);
        instanceResource.setOwnerEmail(getOwnerEmailForResource(instanceResource));

        String asgName = getAsgName(instanceResource, idToASGInstance);
        if (asgName != null) {
            instanceResource.setAdditionalField(INSTANCE_FIELD_ASG_NAME, asgName);
            LOGGER.info(String.format("instance %s has a ASG tag name %s.", instanceResource.getId(), asgName));
        }
        if (instance.getState() != null) {
            ((AWSResource) instanceResource).setAWSResourceState(instance.getState().getName());
        }
        resources.add(instanceResource);
    }
    return resources;
}

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

License:Apache License

@Override
public Collection<String> instancesInAutoScalingGroup(Collection<String> instances) throws Exception {
    DescribeAutoScalingInstancesRequest request = new DescribeAutoScalingInstancesRequest();
    request.setInstanceIds(instances);//from  w  w  w.java 2s  .  c o m
    List<AutoScalingInstanceDetails> asgInstanceDetails = aasClient.describeAutoScalingInstances(request)
            .getAutoScalingInstances();
    Collection<String> asgInstances = new ArrayList<>();
    for (AutoScalingInstanceDetails instance : asgInstanceDetails) {
        asgInstances.add(instance.getInstanceId());
    }
    return asgInstances;
}

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());
        }//  ww w .  j  a v  a  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());
        }//from   ww w  .ja v a2  s  .c  o  m
    } 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  www  . j a  v  a  2  s. 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   ww w.j a  v  a  2  s . c  o  m
    }
    AutoScalingInstanceDetails instanceDetails = describeResult.getAutoScalingInstances().get(0);
    DetachInstancesRequest detachRequest = new DetachInstancesRequest()
            .withInstanceIds(instanceDetails.getInstanceId())
            .withAutoScalingGroupName(instanceDetails.getAutoScalingGroupName())
            .withShouldDecrementDesiredCapacity(false);
    as.detachInstances(detachRequest);
}