From 10daa81057b2cfc0a3e21624b50b0b5d610b4db2 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Wed, 2 Jan 2013 10:59:42 -0800 Subject: Move block_device_mapping destroy operations to conductor This patch moves the compute/manager's use of block_device_mapping_destroy operations to the conductor. Specifically: - block_device_mapping_destroy() - block_device_mapping_destroy_by_instance_and_device() - block_device_mapping_destroy_by_instance_and_volume() Once again, this just adds a single destroy operation to the conductor's RPC API and replicates the older interfaces in the public API. Further, the first now takes a list of bdms to be destroyed (unlike the db operation it mirrors) so that multiple RPC calls can be avoided for bulk delete operations. Related to blueprint no-db-compute-manager Change-Id: Ib93184ee6d32fcda90f75a26b579787e4625e9ae --- nova/tests/conductor/test_conductor.py | 75 ++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) (limited to 'nova/tests') diff --git a/nova/tests/conductor/test_conductor.py b/nova/tests/conductor/test_conductor.py index 4aa552cc7..23930770a 100644 --- a/nova/tests/conductor/test_conductor.py +++ b/nova/tests/conductor/test_conductor.py @@ -305,6 +305,34 @@ class ConductorTestCase(_BaseTestCase, test.TestCase): self.conductor.block_device_mapping_update_or_create(self.context, fake_bdm) + def test_block_device_mapping_destroy(self): + fake_bdm = {'id': 'fake-bdm'} + fake_bdm2 = {'id': 'fake-bdm-2'} + fake_inst = {'uuid': 'fake-uuid'} + self.mox.StubOutWithMock(db, 'block_device_mapping_destroy') + self.mox.StubOutWithMock( + db, 'block_device_mapping_destroy_by_instance_and_device') + self.mox.StubOutWithMock( + db, 'block_device_mapping_destroy_by_instance_and_volume') + db.block_device_mapping_destroy(self.context, 'fake-bdm') + db.block_device_mapping_destroy(self.context, 'fake-bdm-2') + db.block_device_mapping_destroy_by_instance_and_device(self.context, + 'fake-uuid', + 'fake-device') + db.block_device_mapping_destroy_by_instance_and_volume(self.context, + 'fake-uuid', + 'fake-volume') + self.mox.ReplayAll() + self.conductor.block_device_mapping_destroy(self.context, + [fake_bdm, + fake_bdm2]) + self.conductor.block_device_mapping_destroy(self.context, + instance=fake_inst, + device_name='fake-device') + self.conductor.block_device_mapping_destroy(self.context, + instance=fake_inst, + volume_id='fake-volume') + class ConductorRPCAPITestCase(_BaseTestCase, test.TestCase): """Conductor RPC API Tests""" @@ -332,6 +360,31 @@ class ConductorRPCAPITestCase(_BaseTestCase, test.TestCase): self.conductor.block_device_mapping_update_or_create(self.context, fake_bdm) + def test_block_device_mapping_destroy(self): + fake_bdm = {'id': 'fake-bdm'} + fake_inst = {'uuid': 'fake-uuid'} + self.mox.StubOutWithMock(db, 'block_device_mapping_destroy') + self.mox.StubOutWithMock( + db, 'block_device_mapping_destroy_by_instance_and_device') + self.mox.StubOutWithMock( + db, 'block_device_mapping_destroy_by_instance_and_volume') + db.block_device_mapping_destroy(self.context, 'fake-bdm') + db.block_device_mapping_destroy_by_instance_and_device(self.context, + 'fake-uuid', + 'fake-device') + db.block_device_mapping_destroy_by_instance_and_volume(self.context, + 'fake-uuid', + 'fake-volume') + self.mox.ReplayAll() + self.conductor.block_device_mapping_destroy(self.context, + bdms=[fake_bdm]) + self.conductor.block_device_mapping_destroy(self.context, + instance=fake_inst, + device_name='fake-device') + self.conductor.block_device_mapping_destroy(self.context, + instance=fake_inst, + volume_id='fake-volume') + class ConductorAPITestCase(_BaseTestCase, test.TestCase): """Conductor API Tests""" @@ -375,6 +428,28 @@ class ConductorAPITestCase(_BaseTestCase, test.TestCase): self.conductor.block_device_mapping_update_or_create(self.context, 'fake-bdm') + def test_block_device_mapping_destroy(self): + fake_bdm = {'id': 'fake-bdm'} + fake_inst = {'uuid': 'fake-uuid'} + self.mox.StubOutWithMock(db, 'block_device_mapping_destroy') + self.mox.StubOutWithMock( + db, 'block_device_mapping_destroy_by_instance_and_device') + self.mox.StubOutWithMock( + db, 'block_device_mapping_destroy_by_instance_and_volume') + db.block_device_mapping_destroy(self.context, 'fake-bdm') + db.block_device_mapping_destroy_by_instance_and_device(self.context, + 'fake-uuid', + 'fake-device') + db.block_device_mapping_destroy_by_instance_and_volume(self.context, + 'fake-uuid', + 'fake-volume') + self.mox.ReplayAll() + self.conductor.block_device_mapping_destroy(self.context, [fake_bdm]) + self.conductor.block_device_mapping_destroy_by_instance_and_device( + self.context, fake_inst, 'fake-device') + self.conductor.block_device_mapping_destroy_by_instance_and_volume( + self.context, fake_inst, 'fake-volume') + class ConductorLocalAPITestCase(ConductorAPITestCase): """Conductor LocalAPI Tests""" -- cgit