summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/compute/api.py2
-rw-r--r--nova/tests/compute/test_compute.py13
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}