in priam/src/main/java/com/netflix/priam/aws/AWSMembership.java [63:96]
public ImmutableSet<String> getRacMembership() {
AmazonAutoScaling client = null;
try {
List<String> asgNames = new ArrayList<>();
asgNames.add(instanceInfo.getAutoScalingGroup());
asgNames.addAll(Arrays.asList(config.getSiblingASGNames().split("\\s*,\\s*")));
client = getAutoScalingClient();
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 RAC: %s, ASGs: %s --> %s",
instanceInfo.getRac(),
StringUtils.join(asgNames, ","),
StringUtils.join(instanceIds, ",")));
}
return instanceIds.build();
} finally {
if (client != null) client.shutdown();
}
}