in priam/src/main/java/com/netflix/priam/aws/AWSMembership.java [120:151]
public ImmutableSet<String> getCrossAccountRacMembership() {
AmazonAutoScaling client = null;
try {
List<String> asgNames = new ArrayList<>();
asgNames.add(instanceInfo.getAutoScalingGroup());
asgNames.addAll(Arrays.asList(config.getSiblingASGNames().split("\\s*,\\s*")));
client = getCrossAccountAutoScalingClient();
DescribeAutoScalingGroupsRequest asgReq =
new DescribeAutoScalingGroupsRequest()
.withAutoScalingGroupNames(
asgNames.toArray(new String[asgNames.size()]));
DescribeAutoScalingGroupsResult res = client.describeAutoScalingGroups(asgReq);
ImmutableSet.Builder<String> instanceIds = ImmutableSet.builder();
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());
}
if (logger.isInfoEnabled()) {
logger.info(
String.format(
"Querying Amazon returned following instance in the cross-account ASG: %s --> %s",
instanceInfo.getRac(), StringUtils.join(instanceIds, ",")));
}
return instanceIds.build();
} finally {
if (client != null) client.shutdown();
}
}