diff --git a/cinder/image/glance.py b/cinder/image/glance.py index ff6c1bc3101..eb20853f130 100644 --- a/cinder/image/glance.py +++ b/cinder/image/glance.py @@ -359,7 +359,7 @@ class GlanceImageService(object): if image_chunks is None: raise exception.ImageDownloadFailed( - image_href=context, reason=_('image contains no data.')) + image_href=image_id, reason=_('image contains no data.')) if not data: return image_chunks diff --git a/cinder/tests/unit/image/test_glance.py b/cinder/tests/unit/image/test_glance.py index 49c69baaed5..e1858318ba1 100644 --- a/cinder/tests/unit/image/test_glance.py +++ b/cinder/tests/unit/image/test_glance.py @@ -16,6 +16,7 @@ import datetime import itertools +import six import ddt import glanceclient.exc @@ -663,6 +664,20 @@ class TestGlanceImageService(test.TestCase): self.flags(glance_num_retries=1) service.download(self.context, image_id, writer) + def test_download_no_data(self): + class MyGlanceStubClient(glance_stubs.StubGlanceClient): + """Returns None instead of an iterator.""" + def data(self, image_id): + return None + + client = MyGlanceStubClient() + service = self._create_image_service(client) + image_id = 'fake-image-uuid' + e = self.assertRaises(exception.ImageDownloadFailed, service.download, + self.context, image_id) + self.assertIn('image contains no data', six.text_type(e)) + self.assertIn(image_id, six.text_type(e)) + def test_client_forbidden_converts_to_imagenotauthed(self): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that raises a Forbidden exception."""