diff --git a/nova/compute/cells_api.py b/nova/compute/cells_api.py index c7cbc76f2f98..b147c282b13a 100644 --- a/nova/compute/cells_api.py +++ b/nova/compute/cells_api.py @@ -199,6 +199,13 @@ class ComputeCellsAPI(compute_api.API): """ return super(ComputeCellsAPI, self).create(*args, **kwargs) + def _update_block_device_mapping(self, *args, **kwargs): + """Don't create block device mappings in the API cell. + + The child cell will create it and propagate it up to the parent cell. + """ + pass + def update(self, context, instance, **kwargs): """Update an instance.""" cell_name = instance['cell_name'] diff --git a/nova/tests/unit/compute/test_compute_cells.py b/nova/tests/unit/compute/test_compute_cells.py index 4669f9871d82..15da4e8bfb50 100644 --- a/nova/tests/unit/compute/test_compute_cells.py +++ b/nova/tests/unit/compute/test_compute_cells.py @@ -22,6 +22,7 @@ import mock from oslo.config import cfg from oslo.utils import timeutils +from nova import block_device from nova.cells import manager from nova.compute import api as compute_api from nova.compute import cells_api as compute_cells_api @@ -180,6 +181,19 @@ class CellsComputeAPITestCase(test_compute.ComputeAPITestCase): self.assertEqual(migrations, response) + def test_update_block_device_mapping(self): + instance_type = {'swap': 1, 'ephemeral_gb': 1} + instance = self._create_fake_instance_obj() + bdms = [block_device.BlockDeviceDict({'source_type': 'image', + 'destination_type': 'local', + 'image_id': 'fake-image', + 'boot_index': 0})] + self.compute_api._update_block_device_mapping( + instance_type, instance.uuid, bdms) + bdms = db.block_device_mapping_get_all_by_instance( + self.context, instance['uuid']) + self.assertEqual(0, len(bdms)) + @mock.patch('nova.cells.messaging._TargetedMessage') def test_rebuild_sig(self, mock_msg): # TODO(belliott) Cells could benefit from better testing to ensure API