diff options
Diffstat (limited to 'glanceclient/v1/images.py')
-rw-r--r-- | glanceclient/v1/images.py | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/glanceclient/v1/images.py b/glanceclient/v1/images.py index d2af595..87060c2 100644 --- a/glanceclient/v1/images.py +++ b/glanceclient/v1/images.py @@ -14,10 +14,9 @@ # under the License. import copy -import json import six -from six.moves.urllib import parse +import six.moves.urllib.parse as urlparse from glanceclient.common import utils from glanceclient.openstack.common.apiclient import base @@ -60,12 +59,12 @@ class ImageManager(base.ManagerWithFind): resource_class = Image def _list(self, url, response_key, obj_class=None, body=None): - resp = self.client.get(url) + resp, body = self.client.get(url) if obj_class is None: obj_class = self.resource_class - data = resp.json()[response_key] + data = body[response_key] return ([obj_class(self, res, loaded=True) for res in data if res], resp) @@ -123,13 +122,12 @@ class ImageManager(base.ManagerWithFind): :rtype: :class:`Image` """ image_id = base.getid(image) - resp, body = self.client.raw_request( - 'HEAD', '/v1/images/%s' % parse.quote(str(image_id))) - meta = self._image_meta_from_headers(dict(resp.getheaders())) + resp, body = self.client.head('/v1/images/%s' + % urlparse.quote(str(image_id))) + meta = self._image_meta_from_headers(resp.headers) return_request_id = kwargs.get('return_req_id', None) if return_request_id is not None: - return_request_id.append(resp.getheader(OS_REQ_ID_HDR, None)) - + return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None)) return Image(self, meta) def data(self, image, do_checksum=True, **kwargs): @@ -140,14 +138,14 @@ class ImageManager(base.ManagerWithFind): :rtype: iterable containing image data """ image_id = base.getid(image) - resp, body = self.client.raw_request( - 'GET', '/v1/images/%s' % parse.quote(str(image_id))) - checksum = resp.getheader('x-image-meta-checksum', None) + resp, body = self.client.get('/v1/images/%s' + % urlparse.quote(str(image_id))) + checksum = resp.headers.get('x-image-meta-checksum', None) if do_checksum and checksum is not None: - body.set_checksum(checksum) + return utils.integrity_iter(body, checksum) return_request_id = kwargs.get('return_req_id', None) if return_request_id is not None: - return_request_id.append(resp.getheader(OS_REQ_ID_HDR, None)) + return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None)) return body @@ -194,11 +192,11 @@ class ImageManager(base.ManagerWithFind): # trying to encode them qp[param] = strutils.safe_encode(value) - url = '/v1/images/detail?%s' % parse.urlencode(qp) + url = '/v1/images/detail?%s' % urlparse.urlencode(qp) images, resp = self._list(url, "images") if return_request_id is not None: - return_request_id.append(resp.getheader(OS_REQ_ID_HDR, None)) + return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None)) for image in images: if filter_owner(owner, image): @@ -253,10 +251,11 @@ class ImageManager(base.ManagerWithFind): def delete(self, image, **kwargs): """Delete an image.""" - resp = self._delete("/v1/images/%s" % base.getid(image))[0] + url = "/v1/images/%s" % base.getid(image) + resp, body = self.client.delete(url) return_request_id = kwargs.get('return_req_id', None) if return_request_id is not None: - return_request_id.append(resp.getheader(OS_REQ_ID_HDR, None)) + return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None)) def create(self, **kwargs): """Create an image @@ -284,12 +283,12 @@ class ImageManager(base.ManagerWithFind): if copy_from is not None: hdrs['x-glance-api-copy-from'] = copy_from - resp, body_iter = self.client.raw_request( - 'POST', '/v1/images', headers=hdrs, body=image_data) - body = json.loads(''.join([c for c in body_iter])) + resp, body = self.client.post('/v1/images', + headers=hdrs, + data=image_data) return_request_id = kwargs.get('return_req_id', None) if return_request_id is not None: - return_request_id.append(resp.getheader(OS_REQ_ID_HDR, None)) + return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None)) return Image(self, self._format_image_meta_for_user(body['image'])) @@ -327,11 +326,9 @@ class ImageManager(base.ManagerWithFind): hdrs['x-glance-api-copy-from'] = copy_from url = '/v1/images/%s' % base.getid(image) - resp, body_iter = self.client.raw_request( - 'PUT', url, headers=hdrs, body=image_data) - body = json.loads(''.join([c for c in body_iter])) + resp, body = self.client.put(url, headers=hdrs, data=image_data) return_request_id = kwargs.get('return_req_id', None) if return_request_id is not None: - return_request_id.append(resp.getheader(OS_REQ_ID_HDR, None)) + return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None)) return Image(self, self._format_image_meta_for_user(body['image'])) |