summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-10-21 14:38:46 +0000
committerGerrit Code Review <review@openstack.org>2012-10-21 14:38:46 +0000
commitbca0043ac458e0440cb25e4b2844d3326e9815ce (patch)
tree49ba1714c0bd18e9c91845e93270fa992233cc1e /nova
parent7a0d4c2b1d7408890cc717f36752d6f4c2e79977 (diff)
parent30b997d31953d35213ad39ddb3804d791efe5a22 (diff)
Merge "Avoid leaking BDMs for deleted instances."
Diffstat (limited to 'nova')
-rw-r--r--nova/compute/manager.py5
-rw-r--r--nova/tests/compute/test_compute.py3
2 files changed, 8 insertions, 0 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 9bf06e1ef..c818ff855 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -922,6 +922,11 @@ class ComputeManager(manager.SchedulerDependentManager):
self.db.instance_destroy(context, instance_uuid)
system_meta = self.db.instance_system_metadata_get(context,
instance_uuid)
+
+ # ensure block device mappings are not leaked
+ for bdm in bdms:
+ self.db.block_device_mapping_destroy(context, bdm['id'])
+
self._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 c340199ae..5a0c8cc2e 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -647,6 +647,9 @@ class ComputeTestCase(BaseTestCase):
instances = db.instance_get_all(context.get_admin_context())
LOG.info(_("After terminating instances: %s"), instances)
self.assertEqual(len(instances), 0)
+ bdms = db.block_device_mapping_get_all_by_instance(self.context,
+ instance['uuid'])
+ self.assertEqual(len(bdms), 0)
def test_terminate_no_network(self):
# This is as reported in LP bug 1008875