Displaying curl commands for nova and cinder calls

When using the -v option, displays curl equivalent commands and http
messages exchanged with the nova and cinder API servers. Displays the
same messages as those displayed with the --debug option of
python-novaclient and python-cinderclient.

Implements: blueprint curl-commands-in-debugging-messages for nova and
cinder related calls

Change-Id: Ibc8ef79d874334585b81d652b9c7df9e874fffa9
This commit is contained in:
Florent Flament 2013-12-18 15:07:03 +00:00
parent de27c1b455
commit a5e087e7a9
3 changed files with 25 additions and 1 deletions

View File

@ -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

View File

@ -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:

View File

@ -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