summaryrefslogtreecommitdiff
path: root/glanceclient/v1
diff options
context:
space:
mode:
authorAndrey Kurilin <akurilin@mirantis.com>2014-04-16 17:29:15 +0300
committerAndrey Kurilin <akurilin@mirantis.com>2014-06-12 14:42:46 +0300
commitd54faad0425d95f31913b81dd8c0fbd97605fe4e (patch)
treea46e0367c10f90fe55000931c2321e5381a9b93d /glanceclient/v1
parentdbefc1a3b11a44143a5bf5976eb118107658a134 (diff)
downloadpython-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.py14
-rw-r--r--glanceclient/v1/images.py29
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)