Revision ab9cdbc3

b/kamaki/clients/__init__.py
34 34
import json
35 35
import logging
36 36

  
37
import requests
38

  
39
from requests.auth import AuthBase
40

  
41 37
sendlog = logging.getLogger('clients.send')
42 38
recvlog = logging.getLogger('clients.recv')
43 39

  
40
"""
44 41
# Add a convenience status property to the responses
45 42
def _status(self):
46 43
    return requests.status_codes._codes[self.status_code][0].upper()
47 44
requests.Response.status = property(_status)
45
"""
48 46

  
49 47
class ClientError(Exception):
50 48
    def __init__(self, message, status=0, details=''):
......
135 133
            self.http_client.reset_headers()
136 134
            self.http_client.reset_params()
137 135
        return r
138
    """    
139
    def _request(self, method, path, **kwargs):
140
        raw = kwargs.pop('raw', False)
141
        success = kwargs.pop('success', 200)
142

  
143
        data = kwargs.pop('data', None)
144
        self.headers.setdefault('X-Auth-Token', self.token)
145

  
146
        if 'json' in kwargs:
147
            data = json.dumps(kwargs.pop('json'))
148
            self.headers.setdefault('Content-Type', 'application/json')
149
        if data:
150
            self.headers.setdefault('Content-Length', unicode(len(data)))
151

  
152
        url = self.base_url + path
153
        kwargs.setdefault('verify', False)  # Disable certificate verification
154
        r = requests.request(method, url, headers=self.headers, data=data, **kwargs)
155

  
156
        url = self.base_url + path
157
        req = r.request
158
        sendlog.info('%s %s', req.method, req.url)
159
        for key, val in req.headers.items():
160
            sendlog.info('%s: %s', key, val)
161
        sendlog.info('')
162
        if req.data:
163
            sendlog.info('%s', req.data)
164

  
165
        recvlog.info('%d %s', r.status_code, r.status)
166
        for key, val in r.headers.items():
167
            recvlog.info('%s: %s', key, val)
168
        recvlog.info('')
169
        if not raw and r.content:
170
            recvlog.debug(r.content)
171

  
172
        if success is not None:
173
            # Success can either be an in or a collection
174
            success = (success,) if isinstance(success, int) else success
175
            if r.status_code not in success:
176
                self.raise_for_status(r)
177
        return r
178
    """
179 136

  
180 137
    def delete(self, path, **kwargs):
181 138
        return self.request('delete', path, **kwargs)
b/kamaki/clients/compute.py
51 51
            details = val.get('details', '')
52 52
        except AttributeError:
53 53
            message = 'Request responded with error code '+unicode(r.status_code)
54
            details = unicode(r.request.method)+' '+unicode(r.url)
54
            details = unicode(r.method)+' '+unicode(r.url)
55 55
        raise ClientError(message, r.status_code, details)
56 56
    
57 57
    def list_servers(self, detail=False):
b/kamaki/clients/connection/request.py
35 35
from . import HTTPConnection, HTTPResponse
36 36
#from requests.auth import AuthBase
37 37

  
38
# Add a convenience status property to the responses
39
def _status(self):
40
    return requests.status_codes._codes[self.status_code][0].upper()
41
requests.Response.status = property(_status)
42

  
38 43
class HTTPRequest(HTTPConnection):
39 44

  
45
	#Avoid certificate verification by default
46
	verify = False
47

  
40 48
	def perform_request(self, method=None, url=None, params=None, headers=None, data=None):
41 49
		"""perform a request
42 50
		Example: method='PUT' url='https://my.server:8080/path/to/service'
......
60 68
			self.url += param_str
61 69

  
62 70
		#print('RUN[ %s %s ]'%(self.method, self.url))
63
		r = requests.request(self.method, self.url, headers=self.headers, data=data, verify=False)
71
		r = requests.request(self.method, self.url, headers=self.headers, data=data, verify=self.verify)
64 72

  
65 73
		text = r.text if hasattr(r, 'text') else None
66 74
		json = r.json if hasattr(r, 'json') else None

Also available in: Unified diff