diff options
| author | Mark Washenberger <mark.washenberger@rackspace.com> | 2012-03-02 17:39:58 -0500 |
|---|---|---|
| committer | Mark Washenberger <mark.washenberger@rackspace.com> | 2012-03-02 17:39:58 -0500 |
| commit | d7acf13525aaac43a08fa4763bc149e708ab7d39 (patch) | |
| tree | 363a40c9c656c97e4b65c87d15f026b7e9e7537e | |
| parent | 8a530832c599f8866e98947976d74a5332d877af (diff) | |
| download | nova-d7acf13525aaac43a08fa4763bc149e708ab7d39.tar.gz nova-d7acf13525aaac43a08fa4763bc149e708ab7d39.tar.xz nova-d7acf13525aaac43a08fa4763bc149e708ab7d39.zip | |
Handle InstanceNotFound during server update
fixes bug 945206
Change-Id: I4e5519cf03e61db78ee1f147f07bc2d1c0e01c49
| -rw-r--r-- | nova/api/openstack/compute/servers.py | 3 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/test_servers.py | 26 |
2 files changed, 27 insertions, 2 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index b27f1802c..5dc5cff49 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -807,9 +807,8 @@ class Controller(wsgi.Controller): body['server']['auto_disk_config']) update_dict['auto_disk_config'] = auto_disk_config - instance = self.compute_api.get(ctxt, id) - try: + instance = self.compute_api.get(ctxt, id) self.compute_api.update(ctxt, instance, **update_dict) except exception.NotFound: raise exc.HTTPNotFound() diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py index b2ad07027..c758f4749 100644 --- a/nova/tests/api/openstack/compute/test_servers.py +++ b/nova/tests/api/openstack/compute/test_servers.py @@ -951,6 +951,32 @@ class ServersControllerTest(test.TestCase): self.assertEqual(res_dict['server']['id'], FAKE_UUID) self.assertEqual(res_dict['server']['name'], 'server_test') + def test_update_server_not_found(self): + def fake_get(*args, **kwargs): + raise nova.exception.InstanceNotFound() + + self.stubs.Set(nova.compute.API, 'get', fake_get) + req = fakes.HTTPRequest.blank('/v2/fake/servers/%s' % FAKE_UUID) + req.method = 'PUT' + req.content_type = 'application/json' + body = {'server': {'name': 'server_test'}} + req.body = json.dumps(body) + self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, + req, FAKE_UUID, body) + + def test_update_server_not_found_on_update(self): + def fake_update(*args, **kwargs): + raise nova.exception.InstanceNotFound() + + self.stubs.Set(nova.compute.API, 'update', fake_update) + req = fakes.HTTPRequest.blank('/v2/fake/servers/%s' % FAKE_UUID) + req.method = 'PUT' + req.content_type = 'application/json' + body = {'server': {'name': 'server_test'}} + req.body = json.dumps(body) + self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, + req, FAKE_UUID, body) + def test_rebuild_instance_with_access_ipv4_bad_format(self): self.stubs.Set(nova.db, 'instance_get', fakes.fake_instance_get(vm_state=vm_states.ACTIVE)) |
