List of usage examples for com.amazonaws.services.autoscaling.model Instance getInstanceId
public String getInstanceId()
The ID of the instance.
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 ww w .j av a 2 s .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 List<String> getRacMembership() { AmazonAutoScaling client = null;/*from ww w.jav a 2 s . co m*/ try { client = getAutoScalingClient(); DescribeAutoScalingGroupsRequest asgReq = new DescribeAutoScalingGroupsRequest() .withAutoScalingGroupNames(config.getASGName()); DescribeAutoScalingGroupsResult res = client.describeAutoScalingGroups(asgReq); List<String> instanceIds = Lists.newArrayList(); for (AutoScalingGroup asg : res.getAutoScalingGroups()) { for (Instance ins : asg.getInstances()) if (!(ins.getLifecycleState().equalsIgnoreCase("Terminating") || ins.getLifecycleState().equalsIgnoreCase("shutting-down") || ins.getLifecycleState().equalsIgnoreCase("Terminated"))) instanceIds.add(ins.getInstanceId()); } logger.info(String.format("Querying Amazon returned following instance in the ASG: %s --> %s", config.getRack(), StringUtils.join(instanceIds, ","))); return instanceIds; } finally { if (client != null) client.shutdown(); } }
From source file:com.netflix.dynomitemanager.sidecore.aws.AWSMembership.java
License:Apache License
@Override public List<String> getCrossAccountRacMembership() { AmazonAutoScaling client = null;// w w w. j ava 2s . com try { client = getCrossAccountAutoScalingClient(); DescribeAutoScalingGroupsRequest asgReq = new DescribeAutoScalingGroupsRequest() .withAutoScalingGroupNames(config.getASGName()); DescribeAutoScalingGroupsResult res = client.describeAutoScalingGroups(asgReq); List<String> instanceIds = Lists.newArrayList(); for (AutoScalingGroup asg : res.getAutoScalingGroups()) { for (Instance ins : asg.getInstances()) if (!(ins.getLifecycleState().equalsIgnoreCase("Terminating") || ins.getLifecycleState().equalsIgnoreCase("shutting-down") || ins.getLifecycleState().equalsIgnoreCase("Terminated"))) instanceIds.add(ins.getInstanceId()); } logger.info( String.format("Querying Amazon returned following instance in the cross-account ASG: %s --> %s", config.getRack(), StringUtils.join(instanceIds, ","))); return instanceIds; } finally { if (client != null) client.shutdown(); } }
From source file:com.netflix.priam.aws.AWSMembership.java
License:Apache License
@Override public List<String> getRacMembership() { AmazonAutoScaling client = null;//w ww. j a v a 2s. co m try { client = getAutoScalingClient(); DescribeAutoScalingGroupsRequest asgReq = new DescribeAutoScalingGroupsRequest() .withAutoScalingGroupNames(config.getASGName()); DescribeAutoScalingGroupsResult res = client.describeAutoScalingGroups(asgReq); List<String> instanceIds = Lists.newArrayList(); for (AutoScalingGroup asg : res.getAutoScalingGroups()) { for (Instance ins : asg.getInstances()) if (!(ins.getLifecycleState().equalsIgnoreCase("Terminating") || ins.getLifecycleState().equalsIgnoreCase("shutting-down") || ins.getLifecycleState().equalsIgnoreCase("Terminated"))) instanceIds.add(ins.getInstanceId()); } logger.info(String.format("Querying Amazon returned following instance in the ASG: %s --> %s", config.getRac(), StringUtils.join(instanceIds, ","))); return instanceIds; } finally { if (client != null) client.shutdown(); } }
From source file:com.netflix.simianarmy.aws.chaos.ASGChaosCrawler.java
License:Apache License
@Override public List<InstanceGroup> groups(String... names) { List<InstanceGroup> list = new LinkedList<InstanceGroup>(); for (AutoScalingGroup asg : awsClient.describeAutoScalingGroups(names)) { InstanceGroup ig = new BasicInstanceGroup(asg.getAutoScalingGroupName(), Types.ASG, awsClient.region()); for (Instance inst : asg.getInstances()) { ig.addInstance(inst.getInstanceId()); }/*from w w w. j a v a 2 s . co m*/ list.add(ig); } return list; }
From source file:com.netflix.simianarmy.aws.conformity.crawler.AWSClusterCrawler.java
License:Apache License
/** * In this implementation, every auto scaling group is considered a cluster. * @param clusterNames//from w ww .j a v a 2s . co m * the cluster names * @return the list of clusters matching the names, when names are empty, return all clusters */ @Override public List<Cluster> clusters(String... clusterNames) { List<Cluster> list = Lists.newArrayList(); for (Map.Entry<String, AWSClient> entry : regionToAwsClient.entrySet()) { String region = entry.getKey(); AWSClient awsClient = entry.getValue(); Set<String> asgInstances = Sets.newHashSet(); LOGGER.info(String.format("Crawling clusters in region %s", region)); for (AutoScalingGroup asg : awsClient.describeAutoScalingGroups(clusterNames)) { List<String> instances = Lists.newArrayList(); for (Instance instance : asg.getInstances()) { instances.add(instance.getInstanceId()); asgInstances.add(instance.getInstanceId()); } com.netflix.simianarmy.conformity.AutoScalingGroup conformityAsg = new com.netflix.simianarmy.conformity.AutoScalingGroup( asg.getAutoScalingGroupName(), instances.toArray(new String[instances.size()])); for (SuspendedProcess sp : asg.getSuspendedProcesses()) { if ("AddToLoadBalancer".equals(sp.getProcessName())) { LOGGER.info(String.format("ASG %s is suspended: %s", asg.getAutoScalingGroupName(), asg.getSuspendedProcesses())); conformityAsg.setSuspended(true); } } Cluster cluster = new Cluster(asg.getAutoScalingGroupName(), region, conformityAsg); updateCluster(cluster); list.add(cluster); } //Cluster containing all solo instances Set<String> instances = Sets.newHashSet(); for (com.amazonaws.services.ec2.model.Instance awsInstance : awsClient.describeInstances()) { if (!asgInstances.contains(awsInstance.getInstanceId())) { LOGGER.info(String.format("Adding instance %s to soloInstances cluster.", awsInstance.getInstanceId())); instances.add(awsInstance.getInstanceId()); } } //Only create cluster if we have solo instances. if (!instances.isEmpty()) { Cluster cluster = new Cluster("SoloInstances", region, instances); updateCluster(cluster); list.add(cluster); } } return list; }
From source file:com.netflix.simianarmy.aws.janitor.crawler.ASGJanitorCrawler.java
License:Apache License
private List<Resource> getASGResources(String... asgNames) { AWSClient awsClient = getAWSClient(); List<LaunchConfiguration> launchConfigurations = awsClient.describeLaunchConfigurations(); for (LaunchConfiguration lc : launchConfigurations) { nameToLaunchConfig.put(lc.getLaunchConfigurationName(), lc); }//w w w . java 2 s . c om List<Resource> resources = new LinkedList<Resource>(); for (AutoScalingGroup asg : awsClient.describeAutoScalingGroups(asgNames)) { Resource asgResource = new AWSResource().withId(asg.getAutoScalingGroupName()) .withResourceType(AWSResourceType.ASG).withRegion(awsClient.region()) .withLaunchTime(asg.getCreatedTime()); for (TagDescription tag : asg.getTags()) { asgResource.setTag(tag.getKey(), tag.getValue()); } asgResource.setDescription(String.format("%d instances", asg.getInstances().size())); asgResource.setOwnerEmail(getOwnerEmailForResource(asgResource)); if (asg.getStatus() != null) { ((AWSResource) asgResource).setAWSResourceState(asg.getStatus()); } Integer maxSize = asg.getMaxSize(); if (maxSize != null) { asgResource.setAdditionalField(ASG_FIELD_MAX_SIZE, String.valueOf(maxSize)); } // Adds instances and ELBs as additional fields. List<String> instances = new ArrayList<String>(); for (Instance instance : asg.getInstances()) { instances.add(instance.getInstanceId()); } asgResource.setAdditionalField(ASG_FIELD_INSTANCES, StringUtils.join(instances, ",")); asgResource.setAdditionalField(ASG_FIELD_ELBS, StringUtils.join(asg.getLoadBalancerNames(), ",")); String lcName = asg.getLaunchConfigurationName(); LaunchConfiguration lc = nameToLaunchConfig.get(lcName); if (lc != null) { asgResource.setAdditionalField(ASG_FIELD_LC_NAME, lcName); } if (lc != null && lc.getCreatedTime() != null) { asgResource.setAdditionalField(ASG_FIELD_LC_CREATION_TIME, String.valueOf(lc.getCreatedTime().getTime())); } // sets the field for the time when the ASG's traffic is suspended from ELB for (SuspendedProcess sp : asg.getSuspendedProcesses()) { if ("AddToLoadBalancer".equals(sp.getProcessName())) { String suspensionTime = getSuspensionTimeString(sp.getSuspensionReason()); if (suspensionTime != null) { LOGGER.info(String.format("Suspension time of ASG %s is %s", asg.getAutoScalingGroupName(), suspensionTime)); asgResource.setAdditionalField(ASG_FIELD_SUSPENSION_TIME, suspensionTime); break; } } } resources.add(asgResource); } return resources; }
From source file:com.netflix.turbine.discovery.AwsUtil.java
License:Apache License
/** * Convert from AWS ASG Instances to Turbine Instances * /* w ww. j a v a2 s .c o m*/ * @param asgName * @return list of Turbine Instances (not AWS Instances) */ public List<Instance> getTurbineInstances(String asgName) { List<com.amazonaws.services.autoscaling.model.Instance> awsInstances = getAutoScalingGroup(asgName) .getInstances(); Collection<String> instanceIds = Collections2.transform(awsInstances, new Function<com.amazonaws.services.autoscaling.model.Instance, String>() { @Override public String apply(com.amazonaws.services.autoscaling.model.Instance asgInstance) { return asgInstance.getInstanceId(); } }); DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest(); describeInstancesRequest.withInstanceIds(instanceIds); DescribeInstancesResult describeInstancesResult = ec2Client.describeInstances(describeInstancesRequest); List<Reservation> reservations = describeInstancesResult.getReservations(); List<Instance> turbineInstances = new ArrayList<Instance>(); // add all instances from each of the reservations - after converting to Turbine instance for (Reservation reservation : reservations) { List<com.amazonaws.services.ec2.model.Instance> ec2Instances = reservation.getInstances(); for (com.amazonaws.services.ec2.model.Instance ec2Instance : ec2Instances) { String hostname = ec2Instance.getPublicDnsName(); String statusName = ec2Instance.getState().getName(); boolean status = statusName.equals("running"); // see com.amazonaws.services.ec2.model.InstanceState for values Instance turbineInstance = new Instance(hostname, asgName, status); turbineInstance.getAttributes().put("asg", asgName); turbineInstances.add(turbineInstance); } } return turbineInstances; }
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; }//w w w . ja v a2s.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 w w. j a va 2 s.com*/ 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; }