List of usage examples for com.amazonaws.services.autoscaling.model AutoScalingInstanceDetails getInstanceId
public String getInstanceId()
The ID of the instance.
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); }