summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerry Howe <terrylhowe@gmail.com>2013-11-01 13:54:44 -0600
committerTerry Howe <terrylhowe@gmail.com>2013-11-16 05:47:32 -0700
commit98eaccc431865b911d64ee549c226b389315ca5d (patch)
tree43e9bc30de681114bae1462904096d84fb97b91d
parenta1bda219a5160acca6423aea932a9f8103049373 (diff)
downloadpython-openstackclient-98eaccc431865b911d64ee549c226b389315ca5d.tar.gz
change execute to run
Change-Id: I23a210c8771c206df14d2713a2e72ccd92402c43
-rw-r--r--openstackclient/shell.py24
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:]))