#!/usr/bin/env python

import sys

import boto
import boto.ec2
import boto.utils
import carlcm

meta = boto.utils.get_instance_metadata()
region = meta['hostname'].split('.')[1]

ec2 = boto.ec2.connect_to_region(region)

instances = reduce(lambda a, b: a + b, [a.instances for a in ec2.get_all_reservations()], [])

counselors = [i for i in instances if 'counselor' in [g.name for g in i.groups]]
counselors = [i for i in instances if i.state in ['running', 'pending']]
counselors = [i for i in instances if i.private_ip_address != meta['local-ipv4']]
counselor_ips = sorted([i.private_ip_address for i in counselors if i.private_ip_address])

c = carlcm.Context()

c.add_modules(carlcm.ConsulModule(mode='server', webui=True, bootstrap_expect=int(sys.argv[1]), servers=counselor_ips))

c.run_modules()
