diff options
author | Andrey Kurilin <akurilin@mirantis.com> | 2014-04-16 17:29:15 +0300 |
---|---|---|
committer | Andrey Kurilin <akurilin@mirantis.com> | 2014-06-12 14:42:46 +0300 |
commit | d54faad0425d95f31913b81dd8c0fbd97605fe4e (patch) | |
tree | a46e0367c10f90fe55000931c2321e5381a9b93d /glanceclient/v1 | |
parent | dbefc1a3b11a44143a5bf5976eb118107658a134 (diff) | |
download | python-glanceclient-d54faad0425d95f31913b81dd8c0fbd97605fe4e.tar.gz |
Reuse class Manager from common code
Class `Managers` from `glanceclient.common.base` module is similar to
class `apiclient:ManagerWithFind` from common code.
In this patch:
- class glanceclient.common.base:Managers replaced by
apiclient:ManagerWithFind
- module glanceclient.common.base marked as 'deprecated'
Related to bp common-client-library-2
Change-Id: I41da4a9188e97ca2c07b6234fc2ac0a877553d3f
Diffstat (limited to 'glanceclient/v1')
-rw-r--r-- | glanceclient/v1/image_members.py | 14 | ||||
-rw-r--r-- | glanceclient/v1/images.py | 29 |
2 files changed, 26 insertions, 17 deletions
diff --git a/glanceclient/v1/image_members.py b/glanceclient/v1/image_members.py index 77c7f65..f464fb8 100644 --- a/glanceclient/v1/image_members.py +++ b/glanceclient/v1/image_members.py @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. -from glanceclient.common import base +from glanceclient.openstack.common.apiclient import base class ImageMember(base.Resource): @@ -28,13 +28,13 @@ class ImageMember(base.Resource): self.manager.delete(self) -class ImageMemberManager(base.Manager): +class ImageMemberManager(base.ManagerWithFind): resource_class = ImageMember def get(self, image, member_id): image_id = base.getid(image) url = '/v1/images/%s/members/%s' % (image_id, member_id) - resp, body = self.api.json_request('GET', url) + resp, body = self.client.json_request('GET', url) member = body['member'] member['image_id'] = image_id return ImageMember(self, member, loaded=True) @@ -60,7 +60,7 @@ class ImageMemberManager(base.Manager): def _list_by_image(self, image): image_id = base.getid(image) url = '/v1/images/%s/members' % image_id - resp, body = self.api.json_request('GET', url) + resp, body = self.client.json_request('GET', url) out = [] for member in body['members']: member['image_id'] = image_id @@ -70,7 +70,7 @@ class ImageMemberManager(base.Manager): def _list_by_member(self, member): member_id = base.getid(member) url = '/v1/shared-images/%s' % member_id - resp, body = self.api.json_request('GET', url) + resp, body = self.client.json_request('GET', url) out = [] for member in body['shared_images']: member['member_id'] = member_id @@ -84,7 +84,7 @@ class ImageMemberManager(base.Manager): """Creates an image.""" url = '/v1/images/%s/members/%s' % (base.getid(image), member_id) body = {'member': {'can_share': can_share}} - self._update(url, body=body) + self._put(url, json=body) def replace(self, image, members): memberships = [] @@ -100,4 +100,4 @@ class ImageMemberManager(base.Manager): obj['can_share'] = member['can_share'] memberships.append(obj) url = '/v1/images/%s/members' % base.getid(image) - self.api.json_request('PUT', url, {}, {'memberships': memberships}) + self.client.json_request('PUT', url, {}, {'memberships': memberships}) diff --git a/glanceclient/v1/images.py b/glanceclient/v1/images.py index 19b2432..ca4ff1e 100644 --- a/glanceclient/v1/images.py +++ b/glanceclient/v1/images.py @@ -19,8 +19,8 @@ import json import six from six.moves.urllib import parse -from glanceclient.common import base from glanceclient.common import utils +from glanceclient.openstack.common.apiclient import base from glanceclient.openstack.common import strutils UPDATE_PARAMS = ('name', 'disk_format', 'container_format', 'min_disk', @@ -56,9 +56,19 @@ class Image(base.Resource): return self.manager.data(self, **kwargs) -class ImageManager(base.Manager): +class ImageManager(base.ManagerWithFind): resource_class = Image + def _list(self, url, response_key, obj_class=None, body=None): + resp = self.client.get(url) + + if obj_class is None: + obj_class = self.resource_class + + data = resp.json()[response_key] + return ([obj_class(self, res, loaded=True) for res in data if res], + resp) + def _image_meta_from_headers(self, headers): meta = {'properties': {}} safe_decode = strutils.safe_decode @@ -112,10 +122,9 @@ class ImageManager(base.Manager): :param image: image object or id to look up :rtype: :class:`Image` """ - image_id = base.getid(image) - resp, body = self.api.raw_request('HEAD', '/v1/images/%s' - % parse.quote(str(image_id))) + resp, body = self.client.raw_request( + 'HEAD', '/v1/images/%s' % parse.quote(str(image_id))) meta = self._image_meta_from_headers(dict(resp.getheaders())) return_request_id = kwargs.get('return_req_id', None) if return_request_id is not None: @@ -131,8 +140,8 @@ class ImageManager(base.Manager): :rtype: iterable containing image data """ image_id = base.getid(image) - resp, body = self.api.raw_request('GET', '/v1/images/%s' - % parse.quote(str(image_id))) + resp, body = self.client.raw_request( + 'GET', '/v1/images/%s' % parse.quote(str(image_id))) checksum = resp.getheader('x-image-meta-checksum', None) if do_checksum and checksum is not None: body.set_checksum(checksum) @@ -244,7 +253,7 @@ class ImageManager(base.Manager): def delete(self, image, **kwargs): """Delete an image.""" - resp = self._delete("/v1/images/%s" % base.getid(image)) + resp = self._delete("/v1/images/%s" % base.getid(image))[0] 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)) @@ -275,7 +284,7 @@ class ImageManager(base.Manager): if copy_from is not None: hdrs['x-glance-api-copy-from'] = copy_from - resp, body_iter = self.api.raw_request( + 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])) return_request_id = kwargs.get('return_req_id', None) @@ -319,7 +328,7 @@ class ImageManager(base.Manager): hdrs['x-glance-api-copy-from'] = copy_from url = '/v1/images/%s' % base.getid(image) - resp, body_iter = self.api.raw_request( + resp, body_iter = self.client.raw_request( 'PUT', url, headers=hdrs, body=image_data) body = json.loads(''.join([c for c in body_iter])) return_request_id = kwargs.get('return_req_id', None) |