def main(): """main command-line entrypoint; calls parse_args, sets up logging, and either lists steps or instantiates a CustodianRunner and calls run().""" args = parse_args(sys.argv[1:]) # set logging level if args.verbose > 1: set_log_debug(logger) elif args.verbose == 1: set_log_info(logger) if args.ACTION == 'list': for x in CustodianRunner.ordered_step_classes: print(x.name) raise SystemExit(0) if args.ACTION == 'accounts': accts = ManheimConfig.list_accounts(args.config) for acctname in sorted(accts.keys()): print("%s (%s)" % (acctname, accts[acctname])) raise SystemExit(0) cr = CustodianRunner(args.ACCT_NAME, args.config) if args.assume_role: assume_role(cr.config) cr.run( args.ACTION, args.regions, step_names=args.steps, skip_steps=args.skip )
def test_list_accounts(self): with patch('%s.logger' % pbm, autospec=True) as mock_logger: with patch('%s.open' % pbm, mock_open(read_data='foo'), create=True) as m_open: with patch('%s.yaml.load' % pbm, autospec=True) as mock_load: with patch('%s.ManheimConfig' % pbm, autospec=True) as mock_conf: mock_load.return_value = [{ 'account_name': 'a1', 'account_id': 1111, 'foo': 'bar', 'baz': 2, 'regions': ['us-east-1'] }, { 'account_name': 'a2', 'account_id': 2222, 'foo': 'bar1', 'baz': 4, 'regions': ['us-east-2'] }] res = ManheimConfig.list_accounts('/tmp/conf.yml') assert res == {'a1': 1111, 'a2': 2222} assert mock_logger.mock_calls == [ call.info('Loading config from: %s', '/tmp/conf.yml') ] assert m_open.mock_calls == [ call('/tmp/conf.yml', 'r'), call().__enter__(), call().read(), call().__exit__(None, None, None) ] assert mock_load.mock_calls == [call('foo', Loader=yaml.SafeLoader)] assert mock_conf.mock_calls == []