From 99e872a57bf20390949534e94c3929851e827d82 Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Thu, 21 Jun 2012 13:06:18 -0700 Subject: [PATCH] Hook up GET /v1/images/ This allows us to get raw image data out of the API! Related to bp glance-client-parity Change-Id: Id5f55553d2ff3b7bf58515062afdfd4b9b183a54 --- glanceclient/v1/images.py | 13 +++++++++++++ tests/v1/test_images.py | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/glanceclient/v1/images.py b/glanceclient/v1/images.py index f9bad0c2..866fb92c 100644 --- a/glanceclient/v1/images.py +++ b/glanceclient/v1/images.py @@ -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. diff --git a/tests/v1/test_images.py b/tests/v1/test_images.py index 8a183605..db507688 100644 --- a/tests/v1/test_images.py +++ b/tests/v1/test_images.py @@ -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')