summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-11-27 10:41:48 +0000
committerGerrit Code Review <review@openstack.org>2014-11-27 10:41:48 +0000
commit430cc40ec743f4b217a8b8d97e70bfcb717fb038 (patch)
treeab305d7e6e0ec5f077687030cca79b53b31d6efd
parent3cd3b230714200034324f736f88a797ac2484dc8 (diff)
parent3cdd0aaa67400fcf6f04323c4697ebed1966c65f (diff)
downloadglance-430cc40ec743f4b217a8b8d97e70bfcb717fb038.tar.gz
Merge "Improve error log for expired image location url" into stable/juno
-rw-r--r--glance/api/v2/image_data.py2
-rw-r--r--glance/tests/unit/v2/test_image_data_resource.py19
2 files changed, 21 insertions, 0 deletions
diff --git a/glance/api/v2/image_data.py b/glance/api/v2/image_data.py
index dc38ffcea..430ffc53e 100644
--- a/glance/api/v2/image_data.py
+++ b/glance/api/v2/image_data.py
@@ -214,6 +214,8 @@ class ResponseSerializer(wsgi.JSONResponseSerializer):
# an iterator very strange
response.app_iter = iter(image.get_data(offset=offset,
chunk_size=chunk_size))
+ except glance_store.NotFound as e:
+ raise webob.exc.HTTPNotFound(explanation=e.msg)
except exception.Forbidden as e:
raise webob.exc.HTTPForbidden(explanation=e.msg)
#NOTE(saschpe): "response.app_iter = ..." currently resets Content-MD5
diff --git a/glance/tests/unit/v2/test_image_data_resource.py b/glance/tests/unit/v2/test_image_data_resource.py
index a055ab0f7..cc8148a81 100644
--- a/glance/tests/unit/v2/test_image_data_resource.py
+++ b/glance/tests/unit/v2/test_image_data_resource.py
@@ -471,6 +471,25 @@ class TestImageDataSerializer(test_utils.BaseTestCase):
self.serializer.download,
response, image)
+ def test_download_not_found(self):
+ """Test image download returns HTTPNotFound.
+
+ Make sure that serializer returns 404 not found error in case of
+ image is not available at specified location.
+ """
+ with mock.patch.object(glance.api.policy.ImageProxy,
+ 'get_data') as mock_get_data:
+ mock_get_data.side_effect = glance_store.NotFound()
+
+ request = wsgi.Request.blank('/')
+ response = webob.Response()
+ response.request = request
+ image = FakeImage(size=3, data=iter('ZZZ'))
+ image.get_data = mock_get_data
+ self.assertRaises(webob.exc.HTTPNotFound,
+ self.serializer.download,
+ response, image)
+
def test_upload(self):
request = webob.Request.blank('/')
request.environ = {}