diff --git a/novaclient/client.py b/novaclient/client.py index c711fc468..49a52e141 100644 --- a/novaclient/client.py +++ b/novaclient/client.py @@ -7,6 +7,8 @@ import time import urlparse import urllib import httplib2 +import logging + try: import json except ImportError: @@ -20,6 +22,7 @@ if not hasattr(urlparse, 'parse_qsl'): import novaclient from novaclient import exceptions +_logger = logging.getLogger(__name__) class OpenStackClient(httplib2.Http): @@ -37,6 +40,20 @@ class OpenStackClient(httplib2.Http): # httplib2 overrides self.force_exception_to_status_code = True + def http_log(self, args, kwargs, resp, body): + string = 'curl -i' + for element in args: + if element in ('GET','POST'): + string += ' -X ' + element + else: + string += ' ' + element + + for element in kwargs['headers']: + string += ' -H "' + element + ': ' + kwargs['headers'][element] + '"' + + _logger.debug("REQ: %s\n", string) + _logger.debug("RESP:%s %s\n", resp,body) + def request(self, *args, **kwargs): kwargs.setdefault('headers', {}) kwargs['headers']['User-Agent'] = self.USER_AGENT @@ -44,12 +61,10 @@ class OpenStackClient(httplib2.Http): kwargs['headers']['Content-Type'] = 'application/json' kwargs['body'] = json.dumps(kwargs['body']) - if httplib2.debuglevel == 1: - print "ARGS:", args resp, body = super(OpenStackClient, self).request(*args, **kwargs) - if httplib2.debuglevel == 1: - print "RESPONSE", resp - print "BODY", body + + self.http_log(args, kwargs, resp, body) + if body: try: body = json.loads(body)