diff options
author | Terry Howe <terrylhowe@gmail.com> | 2013-11-01 13:54:44 -0600 |
---|---|---|
committer | Terry Howe <terrylhowe@gmail.com> | 2013-11-16 05:47:32 -0700 |
commit | 98eaccc431865b911d64ee549c226b389315ca5d (patch) | |
tree | 43e9bc30de681114bae1462904096d84fb97b91d | |
parent | a1bda219a5160acca6423aea932a9f8103049373 (diff) | |
download | python-openstackclient-98eaccc431865b911d64ee549c226b389315ca5d.tar.gz |
change execute to run
Change-Id: I23a210c8771c206df14d2713a2e72ccd92402c43
-rw-r--r-- | openstackclient/shell.py | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/openstackclient/shell.py b/openstackclient/shell.py index d0905fd9..78e16cd6 100644 --- a/openstackclient/shell.py +++ b/openstackclient/shell.py @@ -20,6 +20,7 @@ import getpass import logging import os import sys +import traceback from cliff import app from cliff import command @@ -75,6 +76,9 @@ class OpenStackShell(app.App): version=openstackclient.__version__, command_manager=commandmanager.CommandManager('openstack.cli')) + # Until we have command line arguments parsed, dump any stack traces + self.dump_stack_trace = True + # This is instantiated in initialize_app() only when using # password flow auth self.auth_client = None @@ -111,6 +115,18 @@ class OpenStackShell(app.App): help="show this help message and exit", ) + def run(self, argv): + try: + super(OpenStackShell, self).run(argv) + except Exception as e: + if not logging.getLogger('').handlers: + logging.basicConfig() + if self.dump_stack_trace: + self.log.error(traceback.format_exc(e)) + else: + self.log.error('Exception raised: ' + str(e)) + return 1 + def build_option_parser(self, description, version): parser = super(OpenStackShell, self).build_option_parser( description, @@ -365,8 +381,10 @@ class OpenStackShell(app.App): requests_log = logging.getLogger("requests") if self.options.debug: requests_log.setLevel(logging.DEBUG) + self.dump_stack_trace = True else: requests_log.setLevel(logging.WARNING) + self.dump_stack_trace = False # Save default domain self.default_domain = self.options.os_default_domain @@ -437,11 +455,7 @@ class OpenStackShell(app.App): def main(argv=sys.argv[1:]): - try: - return OpenStackShell().run(argv) - except Exception: - return 1 - + return OpenStackShell().run(argv) if __name__ == "__main__": sys.exit(main(sys.argv[1:])) |