Revision 5fdccdec

b/kamaki/cli/commands/__init__.py
49 49
        except KeyError:
50 50
            pass
51 51

  
52
    def _update_low_level_log(self):
53
        if hasattr(self, 'client'):
54
            self.client.LOG_TOKEN, self.client.LOG_DATA = (
55
                self['config'].get('global', 'log_token') == 'on',
56
                self['config'].get('global', 'log_data') == 'on')
57

  
52 58
    def _safe_progress_bar(self, msg, arg='progress_bar'):
53 59
        """Try to get a progress bar, but do not raise errors"""
54 60
        try:
b/kamaki/cli/commands/astakos_cli.py
51 51
        base_url = self.config.get('astakos', 'url')\
52 52
            or self.config.get('global', 'url')
53 53
        self.client = AstakosClient(base_url=base_url, token=token)
54
        self._update_low_level_log()
54 55

  
55 56
    def main(self):
56
        self._run
57
        self._run()
57 58

  
58 59

  
59 60
@command(astakos_cmds)
b/kamaki/cli/commands/cyclades_cli.py
72 72
        base_url = self.config.get(service, 'url')\
73 73
            or self.config.get('global', 'url')
74 74
        self.client = CycladesClient(base_url=base_url, token=token)
75
        self._update_low_level_log()
75 76

  
76 77
    def main(self):
77 78
        self._run()
b/kamaki/cli/commands/image_cli.py
59 59
            or self.config.get('compute', 'url')\
60 60
            or self.config.get('global', 'url')
61 61
        self.client = ImageClient(base_url=base_url, token=token)
62
        self._update_low_level_log()
62 63

  
63 64
    def main(self):
64 65
        self._run()
b/kamaki/cli/commands/pithos_cli.py
173 173
            token=self.token,
174 174
            account=self.account,
175 175
            container=self.container)
176
        self._update_low_level_log()
176 177

  
177 178
    def main(self):
178 179
        self._run()
b/kamaki/clients/__init__.py
47 47
DEBUG_LOG = logger.get_log_filename()
48 48
TIMEOUT = 60.0   # seconds
49 49
HTTP_METHODS = ['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'COPY', 'MOVE']
50
LOG_TOKEN = False
51
LOG_DATA = True
52 50

  
53 51
logger.add_file_logger('clients.send', __name__, filename=DEBUG_LOG)
54 52
sendlog = logger.get_logger('clients.send')
......
111 109
            self.details = details if details else []
112 110

  
113 111

  
114
class RequestManager(object):
112
class Logged(object):
113

  
114
    LOG_TOKEN = False
115
    LOG_DATA = False
116

  
117

  
118
class RequestManager(Logged):
115 119
    """Handle http request information"""
116 120

  
117 121
    def _connection_info(self, url, path, params={}):
......
152 156
        self.scheme, self.netloc = self._connection_info(url, path, params)
153 157

  
154 158
    def log(self):
155
        sendlog.debug('%s %s://%s%s\t[%s]' % (
159
        sendlog.info('%s %s://%s%s\t[%s]' % (
156 160
            self.method,
157 161
            self.scheme,
158 162
            self.netloc,
159 163
            self.path,
160 164
            self))
161 165
        for key, val in self.headers.items():
162
            if (not LOG_TOKEN) and key.lower() == 'x-auth-token':
166
            if (not self.LOG_TOKEN) and key.lower() == 'x-auth-token':
163 167
                continue
164
            sendlog.debug('%s: %s\t[%s]', (key, val, self))
168
            sendlog.info('  %s: %s\t[%s]' % (key, val, self))
165 169
        if self.data:
166
            sendlog.debug('data size:%s\t[%s]' % (len(self.data), self))
167
            if LOG_DATA:
170
            sendlog.info('data size:%s\t[%s]' % (len(self.data), self))
171
            if self.LOG_DATA:
168 172
                datasendlog.info(self.data)
169 173
        else:
170
            sendlog.debug('data size:0\t[%s]' % self)
174
            sendlog.info('data size:0\t[%s]' % self)
171 175
        sendlog.info('')
172 176

  
173 177
    def perform(self, conn):
......
195 199
        raise ClientError('HTTPResponse takes too long - kamaki timeout')
196 200

  
197 201

  
198
class ResponseManager(object):
202
class ResponseManager(Logged):
199 203
    """Manage the http request and handle the response data, headers, etc."""
200 204

  
201 205
    def __init__(self, request, poolsize=None):
......
215 219
            with PooledHTTPConnection(
216 220
                    self.request.netloc, self.request.scheme,
217 221
                    **pool_kw) as connection:
222
                self.request.LOG_TOKEN = self.LOG_TOKEN
223
                self.request.LOG_DATA = self.LOG_DATA
218 224
                r = self.request.perform(connection)
219
                recvlog.debug('[resp: %s] <-- [req: %s]\n' % (r, self.request))
225
                recvlog.info('[resp: %s] <-- [req: %s]\n' % (r, self.request))
220 226
                self._request_performed = True
221 227
                self._status_code, self._status = r.status, r.reason
222
                recvlog.debug(
228
                recvlog.info(
223 229
                    '%d %s\t[p: %s]' % (self.status_code, self.status, self))
224 230
                self._headers = dict()
225 231
                for k, v in r.getheaders():
226
                    if (not LOG_TOKEN) and k.lower() == 'x-auth-token':
232
                    if (not self.LOG_TOKEN) and k.lower() == 'x-auth-token':
227 233
                        continue
228 234
                    self._headers[k] = v
229
                    recvlog.debug('  %s: %s\t[p: %s]' % (k, v, self))
235
                    recvlog.info('  %s: %s\t[p: %s]' % (k, v, self))
230 236
                self._content = r.read()
231
                recvlog.debug('data size: %s\t[p: %s]' % (
237
                recvlog.info('data size: %s\t[p: %s]' % (
232 238
                    len(self._content) if self._content else 0,
233 239
                    self))
234
                if LOG_DATA and self._content:
235
                    datarecvlog.debug('%s\t[p: %s]' % (self._content, self))
240
                if self.LOG_DATA and self._content:
241
                    datarecvlog.info('%s\t[p: %s]' % (self._content, self))
236 242
        except Exception as err:
237 243
            from traceback import format_stack
238 244
            recvlog.debug('\n'.join(['%s' % type(err)] + format_stack()))
......
316 322
        '%a %b %d %H:%M:%S %Y',
317 323
        '%A, %d-%b-%y %H:%M:%S GMT',
318 324
        '%a, %d %b %Y %H:%M:%S GMT']
325
    LOG_TOKEN = False
326
    LOG_DATA = False
319 327

  
320 328
    def __init__(self, base_url, token):
321 329
        self.base_url = base_url
......
402 410
                data=data, headers=headers, params=params)
403 411
            #  req.log()
404 412
            r = ResponseManager(req)
413
            r.LOG_TOKEN, r.LOG_DATA = self.LOG_TOKEN, self.LOG_DATA
405 414
        finally:
406 415
            self.headers = dict()
407 416
            self.params = dict()

Also available in: Unified diff