public ImmutableSet getCrossAccountRacMembership()

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();
        }
    }