From c5fb4ebd7662f2f0289a86ece3e3f3b9f8d29574 Mon Sep 17 00:00:00 2001 From: jichenjc Date: Sun, 27 Nov 2016 23:13:44 +0800 Subject: [PATCH] Catch ImageNotAuthorized during boot instance ImageNotAuthorized is not caught during boot instance this could lead to 500 error to API layer Change-Id: Iaae14d27af7b4b8647e1024a5292bd21bcec5560 Closes-Bug: 1646829 (cherry picked from commit 806c48097d351f0dd3b18c850adf6dd31df3b669) --- nova/api/openstack/compute/servers.py | 1 + nova/tests/unit/api/openstack/compute/test_serversV21.py | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 8f407ddf9dbe..855128788522 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -653,6 +653,7 @@ class ServersController(wsgi.Controller): raise exc.HTTPBadRequest(explanation=msg) except (exception.ImageNotActive, exception.ImageBadRequest, + exception.ImageNotAuthorized, exception.FixedIpNotFoundForAddress, exception.FlavorNotFound, exception.FlavorDiskTooSmall, diff --git a/nova/tests/unit/api/openstack/compute/test_serversV21.py b/nova/tests/unit/api/openstack/compute/test_serversV21.py index 8622c3f7af76..a427da10b4df 100644 --- a/nova/tests/unit/api/openstack/compute/test_serversV21.py +++ b/nova/tests/unit/api/openstack/compute/test_serversV21.py @@ -3241,6 +3241,14 @@ class ServersControllerCreateTest(test.TestCase): self.assertRaises(webob.exc.HTTPBadRequest, self._test_create_extra, {}) + @mock.patch.object(compute_api.API, 'create', + side_effect=exception.ImageNotAuthorized( + project_id=FAKE_UUID)) + def test_create_instance_with_image_not_authorized(self, + mock_create): + self.assertRaises(webob.exc.HTTPBadRequest, + self._test_create_extra, {}) + @mock.patch.object(compute_api.API, 'create', side_effect=exception.InstanceExists( name='instance-name'))