def main(argv=None, out=sys.stdout): bootstrap() cmd, options = process_command_line(argv) if options.instances: instances = options.instances.split(',') else: instances = [settings.INSTANCE_ID1, settings.INSTANCE_ID2] if options.aws_access_key_id and options.aws_secret_access_key: access_key_id = options.aws_access_key_id secret_access_key = options.aws_secret_access_key else: access_key_id = settings.AWS_ACCESS_KEY_ID secret_access_key = settings.AWS_SECRET_ACCESS_KEY if cmd == 'status': im = InstanceManager(access_key_id, secret_access_key, instances) statuses = im.status() for status in statuses: msg = "%s (%s) %s %15s started at %s\n" % status out.write(msg) if cmd == 'start': im = InstanceManager(access_key_id, secret_access_key, instances) statuses = im.start() for id, state, ip_addr in statuses: msg = "%s %s %s\n" % (id, state, ip_addr) out.write(msg) if cmd == 'stop': im = InstanceManager(access_key_id, secret_access_key, instances) statuses = im.stop() for id, state, ip_addr in statuses: msg = "%s %s %s\n" % (id, state, ip_addr) out.write(msg) if cmd == 'restart': im = InstanceManager(access_key_id, secret_access_key, instances) statuses = im.stop() statuses = im.start() for id, state, ip_addr in statuses: msg = "%s %s %s\n" % (id, state, ip_addr) out.write(msg) if cmd == 'now': instances = reverse_instances(instances, settings.STATE_FILE) for index, instance in enumerate(instances): if index % 2: im = InstanceManager(access_key_id, secret_access_key, [instance]) statuses = im.stop() statuses = im.start() im = InstanceManager(access_key_id, secret_access_key, instances) statuses = im.status() for status in statuses: msg = "%s (%s) %s %15s started at %s\n" % status out.write(msg) return 0
class InstanceManagerTest(unittest.TestCase): def setUp(self): self.instance_list = ['i-1', 'i-2', 'i-3'] self.im = InstanceManager('xxxxxx', 'xxxxxx', self.instance_list) self.im._get_instances = get_instances_mock self.im.wait_update = 0 def test_status(self): statuses = self.im.status() self.assertEqual(len(statuses), len(self.instance_list)) def test_start(self): statuses = self.im.start() for id, state, ip_addr in statuses: self.assertEqual(state, 'running') self.assertEqual(len(statuses), len(self.instance_list)) def test_stop(self): statuses = self.im.stop() for id, state, ip_addr in statuses: self.assertEqual(state, 'stopped') self.assertEqual(len(statuses), len(self.instance_list))