From 112c4cda58085045289e4c58cdbb4ed13b1bb887 Mon Sep 17 00:00:00 2001 From: Andreas Scheuring Date: Thu, 18 Jan 2018 17:21:26 +0100 Subject: [PATCH] Pass in block_device_info into PartitionInstance The partitionInstance constructor now also takes the block_device_info as optional kwarg. Change-Id: Ibbfcceb671ea069e65729aed88aa2cd90e20b0d5 --- nova_dpm/tests/unit/virt/dpm/test_driver.py | 13 ++++++++++++- nova_dpm/virt/dpm/driver.py | 9 ++++++--- nova_dpm/virt/dpm/vm.py | 3 ++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/nova_dpm/tests/unit/virt/dpm/test_driver.py b/nova_dpm/tests/unit/virt/dpm/test_driver.py index 5c4f57f..46679a7 100644 --- a/nova_dpm/tests/unit/virt/dpm/test_driver.py +++ b/nova_dpm/tests/unit/virt/dpm/test_driver.py @@ -251,7 +251,18 @@ class DPMDriverInstanceTestCase(TestCase): self.dpmdriver.spawn(mock_context, mock_inst, None, None, None, None, []) - mocked_get_part_inst.assert_called_once_with(mock_inst, mock_context) + mocked_get_part_inst.assert_called_once_with(mock_inst, mock_context, + None) + + @mock.patch.object(driver.DPMDriver, '_get_partition_instance') + def test_spawn_bdi(self, mocked_get_part_inst): + """Make sure that block_device_info is provided to PartitionInstance""" + mock_bdm = mock.Mock() + mock_inst = mock.Mock() + self.dpmdriver.spawn(None, mock_inst, None, None, None, None, + [], block_device_info=mock_bdm) + + mocked_get_part_inst.assert_called_once_with(mock_inst, None, mock_bdm) @mock.patch.object(vm.PartitionInstance, 'get_partition') @mock.patch.object(vm.PartitionInstance, 'create') diff --git a/nova_dpm/virt/dpm/driver.py b/nova_dpm/virt/dpm/driver.py index 8e77971..f7666a1 100644 --- a/nova_dpm/virt/dpm/driver.py +++ b/nova_dpm/virt/dpm/driver.py @@ -70,11 +70,13 @@ class DPMDriver(driver.ComputeDriver): self.volume_drivers = self._get_volume_drivers() - def _get_partition_instance(self, instance, context=None): + def _get_partition_instance(self, instance, context=None, + block_device_info=None): if instance.image_ref != '': raise exceptions.BootFromImageNotSupported() else: - return vm.PartitionInstance(instance, self._cpc, context) + return vm.PartitionInstance(instance, self._cpc, context, + block_device_info) def init_host(self, host): """Driver initialization of the hypervisor node""" @@ -303,7 +305,8 @@ class DPMDriver(driver.ComputeDriver): admin_password, allocations, network_info=None, block_device_info=None): - inst = self._get_partition_instance(instance, context) + inst = self._get_partition_instance(instance, context, + block_device_info) # The creation of NICs is limited in DPM by the partitions # boot-os-specific-parameters property. It is used to pass additional diff --git a/nova_dpm/virt/dpm/vm.py b/nova_dpm/virt/dpm/vm.py index 1950072..4bd6609 100644 --- a/nova_dpm/virt/dpm/vm.py +++ b/nova_dpm/virt/dpm/vm.py @@ -119,11 +119,12 @@ def cpcsubset_partition_list(cpc): class PartitionInstance(object): - def __init__(self, instance, cpc, context=None): + def __init__(self, instance, cpc, context=None, block_device_info=None): self.instance = instance self.cpc = cpc self.partition = self.get_partition() self.context = context + self.block_device_info = block_device_info @staticmethod def create_object(instance, cpc, flavor=None):