From 4d6b94a6794c0cc6ae35e550d23323820881eec7 Mon Sep 17 00:00:00 2001 From: Louis Taylor Date: Mon, 15 Sep 2014 20:04:38 +0000 Subject: [PATCH] Print traceback to stderr if --debug is set This change allows easier debugging of client related issues, with a full traceback printed out when an uncaught error occurs in the client. Previously, it could be hard to find the portion of code raising an exception, with just the message from the exception being displayed. Previous behaviour (with a rather artificial client error being raised): $ glance --debug image-list Contrived exception Behaviour after this patch: $ glance --debug image-list Traceback (most recent call last): File "/opt/stack/python-glanceclient/glanceclient/shell.py", line 590, in main args.func(client, args) File "/opt/stack/python-glanceclient/glanceclient/v1/shell.py", line 77, in do_image_list raise(Exception('Contrived exception')) Exception: Contrived exception Contrived exception Change-Id: Id7b76b707e5fc16a0402dcb104ec40787e0ffbe2 --- glanceclient/shell.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/glanceclient/shell.py b/glanceclient/shell.py index 2640ef50..92de22ea 100644 --- a/glanceclient/shell.py +++ b/glanceclient/shell.py @@ -26,6 +26,7 @@ import logging import os from os.path import expanduser import sys +import traceback import six.moves.urllib.parse as urlparse @@ -589,6 +590,12 @@ class OpenStackImagesShell(object): args.func(client, args) except exc.Unauthorized: 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: if profile: trace_id = osprofiler_profiler.get().get_base_id()