diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-11-27 10:41:48 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-11-27 10:41:48 +0000 |
commit | 430cc40ec743f4b217a8b8d97e70bfcb717fb038 (patch) | |
tree | ab305d7e6e0ec5f077687030cca79b53b31d6efd | |
parent | 3cd3b230714200034324f736f88a797ac2484dc8 (diff) | |
parent | 3cdd0aaa67400fcf6f04323c4697ebed1966c65f (diff) | |
download | glance-430cc40ec743f4b217a8b8d97e70bfcb717fb038.tar.gz |
Merge "Improve error log for expired image location url" into stable/juno
-rw-r--r-- | glance/api/v2/image_data.py | 2 | ||||
-rw-r--r-- | glance/tests/unit/v2/test_image_data_resource.py | 19 |
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 = {} |