diff --git a/nova/image/fake.py b/nova/image/fake.py index a51a8ecb4c36..43e889ad47b7 100644 --- a/nova/image/fake.py +++ b/nova/image/fake.py @@ -118,6 +118,7 @@ class _FakeImageService(object): self.create(None, image3) self.create(None, image4) self.create(None, image5) + self._imagedata = {} super(_FakeImageService, self).__init__() def index(self, context, filters=None, marker=None, limit=None): @@ -132,6 +133,11 @@ class _FakeImageService(object): """Return list of detailed image information.""" return copy.deepcopy(self.images.values()) + def get(self, context, image_id, data): + metadata = self.show(context, image_id) + data.write(self._imagedata.get(image_id, '')) + return metadata + def show(self, context, image_id): """Get data about specified image. @@ -164,6 +170,8 @@ class _FakeImageService(object): if image_id in self.images: raise exception.Duplicate() self.images[image_id] = copy.deepcopy(metadata) + if data: + self._imagedata[image_id] = data.read() return self.images[image_id] def update(self, context, image_id, metadata, data=None): diff --git a/nova/tests/test_image.py b/nova/tests/test_image.py index 9eeefe0e511c..0cb138956d32 100644 --- a/nova/tests/test_image.py +++ b/nova/tests/test_image.py @@ -16,6 +16,7 @@ # under the License. import datetime +import StringIO from nova import context from nova import exception @@ -128,6 +129,16 @@ class _ImageTestCase(test.TestCase): index = self.image_service.index(self.context) self.assertEquals(len(index), 0) + def test_create_then_get(self): + blob = 'some data' + s1 = StringIO.StringIO(blob) + self.image_service.create(self.context, + {'id': '32', 'foo': 'bar'}, + data=s1) + s2 = StringIO.StringIO() + self.image_service.get(self.context, '32', data=s2) + self.assertEquals(s2.getvalue(), blob, 'Did not get blob back intact') + class FakeImageTestCase(_ImageTestCase): def setUp(self):