Merge "change execute to run"

This commit is contained in:
Jenkins 2013-11-19 17:24:30 +00:00 committed by Gerrit Code Review
commit 56fbf65941

@ -20,6 +20,7 @@ import getpass
import logging import logging
import os import os
import sys import sys
import traceback
from cliff import app from cliff import app
from cliff import command from cliff import command
@ -75,6 +76,9 @@ class OpenStackShell(app.App):
version=openstackclient.__version__, version=openstackclient.__version__,
command_manager=commandmanager.CommandManager('openstack.cli')) 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 # This is instantiated in initialize_app() only when using
# password flow auth # password flow auth
self.auth_client = None self.auth_client = None
@ -111,6 +115,18 @@ class OpenStackShell(app.App):
help="show this help message and exit", 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): def build_option_parser(self, description, version):
parser = super(OpenStackShell, self).build_option_parser( parser = super(OpenStackShell, self).build_option_parser(
description, description,
@ -365,8 +381,10 @@ class OpenStackShell(app.App):
requests_log = logging.getLogger("requests") requests_log = logging.getLogger("requests")
if self.options.debug: if self.options.debug:
requests_log.setLevel(logging.DEBUG) requests_log.setLevel(logging.DEBUG)
self.dump_stack_trace = True
else: else:
requests_log.setLevel(logging.WARNING) requests_log.setLevel(logging.WARNING)
self.dump_stack_trace = False
# Save default domain # Save default domain
self.default_domain = self.options.os_default_domain self.default_domain = self.options.os_default_domain
@ -437,11 +455,7 @@ class OpenStackShell(app.App):
def main(argv=sys.argv[1:]): def main(argv=sys.argv[1:]):
try: return OpenStackShell().run(argv)
return OpenStackShell().run(argv)
except Exception:
return 1
if __name__ == "__main__": if __name__ == "__main__":
sys.exit(main(sys.argv[1:])) sys.exit(main(sys.argv[1:]))