Merge "Re-enable stacktracing when --debug is used"
This commit is contained in:
@@ -467,6 +467,14 @@ def endpoint_version_from_url(endpoint, default_version=None):
|
|||||||
return None, default_version
|
return None, default_version
|
||||||
|
|
||||||
|
|
||||||
|
def debug_enabled(argv):
|
||||||
|
if bool(env('GLANCECLIENT_DEBUG')) is True:
|
||||||
|
return True
|
||||||
|
if '--debug' in argv or '-d' in argv:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
class IterableWithLength(object):
|
class IterableWithLength(object):
|
||||||
def __init__(self, iterable, length):
|
def __init__(self, iterable, length):
|
||||||
self.iterable = iterable
|
self.iterable = iterable
|
||||||
|
@@ -490,18 +490,12 @@ class OpenStackImagesShell(object):
|
|||||||
try:
|
try:
|
||||||
return self.get_subcommand_parser(api_version)
|
return self.get_subcommand_parser(api_version)
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
if options.debug:
|
|
||||||
traceback.print_exc()
|
|
||||||
if not str(e):
|
if not str(e):
|
||||||
# Add a generic import error message if the raised
|
# Add a generic import error message if the raised
|
||||||
# ImportError has none.
|
# ImportError has none.
|
||||||
raise ImportError('Unable to import module. Re-run '
|
raise ImportError('Unable to import module. Re-run '
|
||||||
'with --debug for more info.')
|
'with --debug for more info.')
|
||||||
raise
|
raise
|
||||||
except Exception:
|
|
||||||
if options.debug:
|
|
||||||
traceback.print_exc()
|
|
||||||
raise
|
|
||||||
|
|
||||||
# Parse args once to find version
|
# Parse args once to find version
|
||||||
|
|
||||||
@@ -603,12 +597,6 @@ class OpenStackImagesShell(object):
|
|||||||
args.func(client, args)
|
args.func(client, args)
|
||||||
except exc.Unauthorized:
|
except exc.Unauthorized:
|
||||||
raise exc.CommandError("Invalid OpenStack Identity credentials.")
|
raise exc.CommandError("Invalid OpenStack Identity credentials.")
|
||||||
except Exception:
|
|
||||||
# NOTE(kragniz) Print any exceptions raised to stderr if the
|
|
||||||
# --debug flag is set
|
|
||||||
if args.debug:
|
|
||||||
traceback.print_exc()
|
|
||||||
raise
|
|
||||||
finally:
|
finally:
|
||||||
if profile:
|
if profile:
|
||||||
trace_id = osprofiler_profiler.get().get_base_id()
|
trace_id = osprofiler_profiler.get().get_base_id()
|
||||||
@@ -679,4 +667,6 @@ def main():
|
|||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
utils.exit('... terminating glance client', exit_code=130)
|
utils.exit('... terminating glance client', exit_code=130)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
if utils.debug_enabled(argv) is True:
|
||||||
|
traceback.print_exc()
|
||||||
utils.exit(encodeutils.exception_to_unicode(e))
|
utils.exit(encodeutils.exception_to_unicode(e))
|
||||||
|
@@ -23,6 +23,7 @@ import hashlib
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import traceback
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
@@ -151,6 +152,44 @@ class ShellTest(testutils.TestCase):
|
|||||||
argstr = '--os-image-api-version 2 help foofoo'
|
argstr = '--os-image-api-version 2 help foofoo'
|
||||||
self.assertRaises(exc.CommandError, shell.main, argstr.split())
|
self.assertRaises(exc.CommandError, shell.main, argstr.split())
|
||||||
|
|
||||||
|
@mock.patch('sys.stdout', six.StringIO())
|
||||||
|
@mock.patch('sys.stderr', six.StringIO())
|
||||||
|
@mock.patch('sys.argv', ['glance', 'help', 'foofoo'])
|
||||||
|
def test_no_stacktrace_when_debug_disabled(self):
|
||||||
|
with mock.patch.object(traceback, 'print_exc') as mock_print_exc:
|
||||||
|
try:
|
||||||
|
openstack_shell.main()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
self.assertFalse(mock_print_exc.called)
|
||||||
|
|
||||||
|
@mock.patch('sys.stdout', six.StringIO())
|
||||||
|
@mock.patch('sys.stderr', six.StringIO())
|
||||||
|
@mock.patch('sys.argv', ['glance', 'help', 'foofoo'])
|
||||||
|
def test_stacktrace_when_debug_enabled_by_env(self):
|
||||||
|
old_environment = os.environ.copy()
|
||||||
|
os.environ = {'GLANCECLIENT_DEBUG': '1'}
|
||||||
|
try:
|
||||||
|
with mock.patch.object(traceback, 'print_exc') as mock_print_exc:
|
||||||
|
try:
|
||||||
|
openstack_shell.main()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
self.assertTrue(mock_print_exc.called)
|
||||||
|
finally:
|
||||||
|
os.environ = old_environment
|
||||||
|
|
||||||
|
@mock.patch('sys.stdout', six.StringIO())
|
||||||
|
@mock.patch('sys.stderr', six.StringIO())
|
||||||
|
@mock.patch('sys.argv', ['glance', '--debug', 'help', 'foofoo'])
|
||||||
|
def test_stacktrace_when_debug_enabled(self):
|
||||||
|
with mock.patch.object(traceback, 'print_exc') as mock_print_exc:
|
||||||
|
try:
|
||||||
|
openstack_shell.main()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
self.assertTrue(mock_print_exc.called)
|
||||||
|
|
||||||
def test_help(self):
|
def test_help(self):
|
||||||
shell = openstack_shell.OpenStackImagesShell()
|
shell = openstack_shell.OpenStackImagesShell()
|
||||||
argstr = '--os-image-api-version 2 help'
|
argstr = '--os-image-api-version 2 help'
|
||||||
|
Reference in New Issue
Block a user