diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/cluster | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/bin/cluster b/bin/cluster index 2ea389523..fbbffadc9 100755 --- a/bin/cluster +++ b/bin/cluster @@ -3,8 +3,9 @@ import argparse import ConfigParser -import sys import os +import sys +import traceback class Cluster(object): @@ -141,6 +142,11 @@ class Cluster(object): os.environ[key] = config.get('ec2', key) inventory = '-i inventory/aws/hosts' + + missing = [key for key in ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY'] if key not in os.environ] + if len(missing) > 0: + raise ValueError("PROVIDER aws requires {} environment variable(s). See README_AWS.md".format(missing)) + elif 'libvirt' == provider: inventory = '-i inventory/libvirt/hosts' elif 'openstack' == provider: @@ -168,7 +174,7 @@ class Cluster(object): if args.option: for opt in args.option: k, v = opt.split('=', 1) - env['opt_'+k] = v + env['cli_' + k] = v ansible_env = '-e \'{}\''.format( ' '.join(['%s=%s' % (key, value) for (key, value) in env.items()]) @@ -178,6 +184,9 @@ class Cluster(object): verbose, inventory, ansible_env, playbook ) + if args.profile: + command = 'ANSIBLE_CALLBACK_PLUGINS=ansible-profile/callback_plugins ' + command + if args.verbose > 1: command = 'time {}'.format(command) @@ -234,6 +243,9 @@ if __name__ == '__main__': meta_parser.add_argument('-o', '--option', action='append', help='options') + meta_parser.add_argument('-p', '--profile', action='store_true', + help='Enable playbook profiling') + action_parser = parser.add_subparsers(dest='action', title='actions', description='Choose from valid actions') @@ -290,7 +302,14 @@ if __name__ == '__main__': sys.stderr.write('\nACTION [update] aborted by user!\n') exit(1) - status = args.func(args) - if status != 0: - sys.stderr.write("ACTION [{}] failed with exit status {}\n".format(args.action, status)) + status = 1 + try: + status = args.func(args) + if status != 0: + sys.stderr.write("ACTION [{}] failed with exit status {}\n".format(args.action, status)) + except Exception, e: + if args.verbose: + traceback.print_exc(file=sys.stderr) + else: + sys.stderr.write("{}\n".format(e)) exit(status) |