Hook up GET /v1/images/<id>

This allows us to get raw image data out of the API! Related to
bp glance-client-parity

Change-Id: Id5f55553d2ff3b7bf58515062afdfd4b9b183a54
This commit is contained in:
Brian Waldon
2012-06-21 13:06:18 -07:00
parent 6e1157059e
commit 99e872a57b
2 changed files with 33 additions and 0 deletions

View File

@@ -38,6 +38,9 @@ class Image(base.Resource):
def delete(self):
return self.manager.delete(self)
def data(self):
return self.manager.data(self)
class ImageManager(base.Manager):
resource_class = Image
@@ -72,6 +75,16 @@ class ImageManager(base.Manager):
meta = self._image_meta_from_headers(resp)
return Image(self, meta)
def data(self, image):
"""Get the raw data for a specific image.
:param image: image object or id to look up
:rtype: iterable containing image data
"""
image_id = base.getid(image)
resp, body = self.api.raw_request('GET', '/v1/images/%s' % image_id)
return body
def list(self, limit=None, marker=None, filters=None):
"""Get a list of images.

View File

@@ -62,6 +62,10 @@ fixtures = {
'x-image-meta-property-arch': 'x86_64',
},
None),
'GET': (
{},
'XXX',
),
'PUT': (
{},
json.dumps(
@@ -121,6 +125,12 @@ class ImageManagerTest(unittest.TestCase):
self.assertEqual(image.id, '1')
self.assertEqual(image.name, 'image-1')
def test_data(self):
data = self.mgr.data('1')
expect = [('GET', '/v1/images/1', {}, None)]
self.assertEqual(self.api.calls, expect)
self.assertEqual(data, 'XXX')
def test_delete(self):
self.mgr.delete('1')
expect = [('DELETE', '/v1/images/1', {}, None)]
@@ -232,3 +242,13 @@ class ImageTest(unittest.TestCase):
('PUT', '/v1/images/1', {'x-image-meta-name': 'image-5'}, None),
]
self.assertEqual(self.api.calls, expect)
def test_data(self):
image = self.mgr.get('1')
data = image.data()
expect = [
('HEAD', '/v1/images/1', {}, None),
('GET', '/v1/images/1', {}, None),
]
self.assertEqual(self.api.calls, expect)
self.assertEqual(data, 'XXX')