for (Instance ins : asg.getInstances()) if (!(ins.getLifecycleState().equalsIgnoreCase("Terminating") || ins.getLifecycleState().equalsIgnoreCase("shutting-down")
if (getHealthCheckGracePeriod() != null) sb.append("HealthCheckGracePeriod: ").append(getHealthCheckGracePeriod()).append(","); if (getInstances() != null) sb.append("Instances: ").append(getInstances()).append(","); if (getCreatedTime() != null) sb.append("CreatedTime: ").append(getCreatedTime()).append(",");
for (Instance ins : asg.getInstances()) if (!(ins.getLifecycleState().equalsIgnoreCase("Terminating") || ins.getLifecycleState().equalsIgnoreCase("shutting-down")
hashCode = prime * hashCode + ((getHealthCheckType() == null) ? 0 : getHealthCheckType().hashCode()); hashCode = prime * hashCode + ((getHealthCheckGracePeriod() == null) ? 0 : getHealthCheckGracePeriod().hashCode()); hashCode = prime * hashCode + ((getInstances() == null) ? 0 : getInstances().hashCode()); hashCode = prime * hashCode + ((getCreatedTime() == null) ? 0 : getCreatedTime().hashCode()); hashCode = prime * hashCode + ((getSuspendedProcesses() == null) ? 0 : getSuspendedProcesses().hashCode());
if (other.getHealthCheckGracePeriod() != null && other.getHealthCheckGracePeriod().equals(this.getHealthCheckGracePeriod()) == false) return false; if (other.getInstances() == null ^ this.getInstances() == null) return false; if (other.getInstances() != null && other.getInstances().equals(this.getInstances()) == false) return false; if (other.getCreatedTime() == null ^ this.getCreatedTime() == null)
/** * <p> * The EC2 instances associated with the group. * </p> * <p> * Returns a reference to this object so that method calls can be chained * together. * * @param instances <p> * The EC2 instances associated with the group. * </p> * @return A reference to this updated object so that method calls can be * chained together. */ public AutoScalingGroup withInstances(Instance... instances) { if (getInstances() == null) { this.instances = new java.util.ArrayList<Instance>(instances.length); } for (Instance value : instances) { this.instances.add(value); } return this; }
if (getHealthCheckGracePeriod() != null) sb.append("HealthCheckGracePeriod: " + getHealthCheckGracePeriod() + ","); if (getInstances() != null) sb.append("Instances: " + getInstances() + ","); if (getCreatedTime() != null) sb.append("CreatedTime: " + getCreatedTime() + ",");
hashCode = prime * hashCode + ((getInstances() == null) ? 0 : getInstances().hashCode()); hashCode = prime * hashCode + ((getCreatedTime() == null) ? 0 : getCreatedTime().hashCode());
private Instance findNewInstance(AutoScalingGroup originalGroup, AutoScalingGroup updatedGroup) { updatedGroup.getInstances().removeAll(originalGroup.getInstances()); return updatedGroup.getInstances().isEmpty() ? null : updatedGroup.getInstances().get(0); }
@Override public boolean calculate(DeployConfiguration activeConfiguration, AutoScalingGroup autoScalingGroup, long inService, long healthy, long inStandby) { return !autoScalingGroup.getInstances().isEmpty(); } }
&& other.getHealthCheckGracePeriod().equals(this.getHealthCheckGracePeriod()) == false) return false; if (other.getInstances() == null ^ this.getInstances() == null) return false; if (other.getInstances() != null && other.getInstances().equals(this.getInstances()) == false) return false; if (other.getCreatedTime() == null ^ this.getCreatedTime() == null)
private List<Ec2Instance> checkInstances(AwsAutoScalingDeployUtils awsDeployUtils, AutoScalingGroup asGroup, List<Ec2Instance> instances) { List<String> removedInstances = asGroup.getInstances().stream() .filter(i -> i.getLifecycleState().equalsIgnoreCase(AwsState.STANDBY.name())) .map(Instance::getInstanceId) .filter(awsDeployUtils::checkEc2Instance) .collect(Collectors.toList()); if (removedInstances != null && removedInstances.isEmpty()) { return instances.stream() .filter(i -> !removedInstances.contains(i.getInstanceId())) .collect(Collectors.toList()); } return instances; } }
public boolean shouldAddExtraInstance(AutoScalingGroup autoScalingGroup) { return autoScalingGroup.getInstances().size() < autoScalingGroup.getMaxSize() && !(activeConfiguration.getMaxCapacity() != -1 && autoScalingGroup.getInstances().size() > activeConfiguration.getMaxCapacity()); }
default boolean isDeployable(DeployConfiguration activeConfiguration, AutoScalingGroup autoScalingGroup, List<Ec2Instance> instances) { long healthyInstances = autoScalingGroup.getInstances().stream() .filter(i -> i.getLifecycleState().equals(LifecycleState.InService.toString())) .count(); long inStandbyInstances = autoScalingGroup.getInstances().stream() .filter(i -> i.getLifecycleState().equals(LifecycleState.Standby.toString())) .count(); long inServiceInstances = instances.stream().filter(i -> AwsState.INSERVICE.equals(i.getElbState())).count(); return this.calculate(activeConfiguration, autoScalingGroup, inServiceInstances, healthyInstances, inStandbyInstances); }
private List<Instance> listGroupInstances(AutoScalingGroup autoScalingGroup) throws Exception { List<String> instanceIds = autoScalingGroup.getInstances().stream() .map(com.amazonaws.services.autoscaling.model.Instance::getInstanceId).collect(Collectors.toList()); if (instanceIds.isEmpty()) { // note: we don't want to call get instances with an emtpy list // since this causes DescribeInstances to get *all* instances in the // region (not just the ones in our Auto Scaling Group, which is // what we want) return new ArrayList<>(); } List<Filter> filters = Collections.emptyList(); Callable<List<Instance>> requester = new GetInstances(getAwsCredentials(), getRegion(), getClientConfig(), instanceIds, filters); int initialDelay = 1; int maxAttempts = 10; // max 2 ^ 9 - 1 seconds = 511 seconds String name = String.format("await-describe-instances"); Retryable<List<Instance>> retryer = Retryers.exponentialBackoffRetryer(name, requester, initialDelay, TimeUnit.SECONDS, maxAttempts, instancesPresent(instanceIds)); return retryer.call(); } }
String instanceId = "Your-InstanceId"; AmazonAutoScalingClient amazonAutoScalingClient = new AmazonAutoScalingClient(new BasicAWSCredentials(accessKey, secretKey)); DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = amazonAutoScalingClient.describeAutoScalingGroups(); for(AutoScalingGroup autoScalingGroup : describeAutoScalingGroupsResult.getAutoScalingGroups()) { for(Instance instance : autoScalingGroup.getInstances()) { if(instance.getInstanceId().equals(instanceId)) { return autoScalingGroup.getAutoScalingGroupName(); } } }
public void preDeploy(List<Ec2Instance> instances, AutoScalingGroup asGroup) throws MojoFailureException, MojoExecutionException { if (asGroup.getInstances().isEmpty()) { log.info("No instances found in autoscaling group, spinning new instance"); WaitForInstanceRequestExecutor.InstanceStatus instanceStatus = newInstance -> awsDeployUtils.checkInstanceInService(newInstance.getInstanceId()); awsDeployUtils.setDesiredCapacity(asGroup, asGroup.getDesiredCapacity() + 1); WaitForInstanceRequestExecutor waitForDeployedInstanceRequestExecutor = new WaitForInstanceRequestExecutor(log, 10); waitForDeployedInstanceRequestExecutor.executeRequest(asGroup, awsDeployUtils, instanceStatus); instances.addAll(awsDeployUtils.getInstancesForAutoScalingGroup(log, awsDeployUtils.getAutoScalingGroup())); } }
@Override public List<String> getCrossAccountRacMembership() { AmazonAutoScaling client = null; try { client = getCrossAccountAutoScalingClient(); DescribeAutoScalingGroupsRequest asgReq = new DescribeAutoScalingGroupsRequest() .withAutoScalingGroupNames(envVariables.getRack()); 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", envVariables.getRack(), StringUtils.join(instanceIds, ","))); return instanceIds; } finally { if (client != null) client.shutdown(); } }
@Override public List<String> getRacMembership() { AmazonAutoScaling client = null; try { client = getAutoScalingClient(); DescribeAutoScalingGroupsRequest asgReq = new DescribeAutoScalingGroupsRequest() .withAutoScalingGroupNames(envVariables.getRack()); 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", envVariables.getRack(), StringUtils.join(instanceIds, ","))); return instanceIds; } finally { if (client != null) client.shutdown(); } }
request.addParameter(prefix, StringUtils.fromInteger(healthCheckGracePeriod)); if (_autoScalingGroup.getInstances() != null) { prefix = _prefix + "Instances"; java.util.List<Instance> instances = _autoScalingGroup.getInstances(); int instancesIndex = 1; String instancesPrefix = prefix;