diff options
-rw-r--r-- | nova/compute/api.py | 2 | ||||
-rw-r--r-- | nova/tests/compute/test_compute.py | 13 |
2 files changed, 9 insertions, 6 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index 28c7068ba..0987b0549 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -954,7 +954,6 @@ class API(base.Base): elevated = context.elevated() self.network_api.deallocate_for_instance(elevated, instance) - self.db.instance_destroy(context, instance_uuid) system_meta = self.db.instance_system_metadata_get(context, instance_uuid) @@ -979,6 +978,7 @@ class API(base.Base): vm_state=vm_states.DELETED, task_state=None, terminated_at=timeutils.utcnow()) + self.db.instance_destroy(context, instance_uuid) compute_utils.notify_about_instance_usage( context, instance, "delete.end", system_metadata=system_meta) diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index d8bc34883..52b7c4401 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -3150,7 +3150,7 @@ class ComputeAPITestCase(BaseTestCase): def dummy(*args, **kwargs): self.network_api_called = True - pass + self.stubs.Set(self.compute_api.network_api, 'deallocate_for_instance', dummy) @@ -3166,10 +3166,13 @@ class ComputeAPITestCase(BaseTestCase): self.assertEqual(instance['task_state'], None) self.assertTrue(self.network_api_called) - #local delete, so db should be clean - self.assertRaises(exception.InstanceNotFound, db.instance_destroy, - self.context, - instance['uuid']) + # fetch the instance state from db and verify deletion. + deleted_context = context.RequestContext('fake', 'fake', + read_deleted='yes') + instance = db.instance_get_by_uuid(deleted_context, instance_uuid) + self.assertEqual(instance['vm_state'], vm_states.DELETED) + self.assertEqual(instance['task_state'], None) + self.assertTrue(instance['deleted']) def test_repeated_delete_quota(self): in_use = {'instances': 1} |