diff --git a/openstackclient/common/utils.py b/openstackclient/common/utils.py index 91a20895b..94ea22253 100644 --- a/openstackclient/common/utils.py +++ b/openstackclient/common/utils.py @@ -15,6 +15,7 @@ """Common client utilities""" +import logging import os import six import sys @@ -215,3 +216,16 @@ def wait_for_status(status_f, callback(progress) time.sleep(sleep_time) return retval + + +def get_effective_log_level(): + """Returns the lowest logging level considered by logging handlers + + Retrieve an return the smallest log level set among the root + logger's handlers (in case of multiple handlers). + """ + root_log = logging.getLogger() + min_log_lvl = logging.CRITICAL + for handler in root_log.handlers: + min_log_lvl = min(min_log_lvl, handler.level) + return min_log_lvl diff --git a/openstackclient/compute/client.py b/openstackclient/compute/client.py index 4ccb2f6d4..765a48db9 100644 --- a/openstackclient/compute/client.py +++ b/openstackclient/compute/client.py @@ -35,6 +35,10 @@ def make_client(instance): instance._api_version[API_NAME], API_VERSIONS) LOG.debug('instantiating compute client: %s' % compute_client) + + # Set client http_log_debug to True if verbosity level is high enough + http_log_debug = utils.get_effective_log_level() <= logging.DEBUG + client = compute_client( username=instance._username, api_key=instance._password, @@ -49,7 +53,8 @@ def make_client(instance): extensions=[], service_type=API_NAME, # FIXME(dhellmann): what is service_name? - service_name='') + service_name='', + http_log_debug=http_log_debug) # Populate the Nova client to skip another auth query to Identity if instance._url: diff --git a/openstackclient/volume/client.py b/openstackclient/volume/client.py index e04e8cd7b..a53203f1a 100644 --- a/openstackclient/volume/client.py +++ b/openstackclient/volume/client.py @@ -37,6 +37,10 @@ def make_client(instance): ) LOG.debug('instantiating volume client') + + # Set client http_log_debug to True if verbosity level is high enough + http_log_debug = utils.get_effective_log_level() <= logging.DEBUG + client = volume_client( username=instance._username, api_key=instance._password, @@ -44,6 +48,7 @@ def make_client(instance): auth_url=instance._auth_url, cacert=instance._cacert, insecure=instance._insecure, + http_log_debug=http_log_debug ) return client