Fix confusing between block_device_mapping and _info

Patches [1][2] confused block_device_info (bdi) with
block_device_mapping (bdm). We always need the bdm. Nova_dpm's spawn
method now transforms the passed in bdi into a bdm.

[1] 112c4cda58
[2] 255d62a20b

Change-Id: Id3ec0b1861bedab76db42233d49752a277892c77
This commit is contained in:
Andreas Scheuring 2018-01-19 11:26:43 +01:00
parent bc04ba1279
commit ae261d2405
4 changed files with 24 additions and 22 deletions

View File

@ -242,18 +242,18 @@ class DPMDriverInstanceTestCase(TestCase):
self.dpmdriver = driver.DPMDriver(None)
self.dpmdriver._client = self.client
def _test__get_partition_instance(self, context=None, bdi=None):
def _test__get_partition_instance(self, context=None, bdm=None):
self.dpmdriver._cpc = mock.Mock()
mock_inst = mock.Mock()
mock_inst.image_ref = ''
part_inst = self.dpmdriver._get_partition_instance(
mock_inst, context=context, block_device_info=bdi)
mock_inst, context=context, block_device_mapping=bdm)
self.assertEqual(mock_inst, part_inst.instance)
self.assertEqual(self.dpmdriver._cpc, part_inst.cpc)
self.assertEqual(context, part_inst.context)
self.assertEqual(bdi, part_inst.block_device_info)
self.assertEqual(bdm, part_inst.block_device_mapping)
@mock.patch.object(vm.PartitionInstance, 'get_partition')
def test___get_partition_instance_minimal(self, mocked_gp):
@ -265,7 +265,7 @@ class DPMDriverInstanceTestCase(TestCase):
mock_bdi = mock.Mock()
self._test__get_partition_instance(context=mock_context,
bdi=mock_bdi)
bdm=mock_bdi)
def test__get_partition_instance_boot_from_image(self):
mock_inst = mock.Mock()
@ -274,26 +274,29 @@ class DPMDriverInstanceTestCase(TestCase):
self.assertRaises(exceptions.BootFromImageNotSupported,
self.dpmdriver._get_partition_instance, mock_inst)
@mock.patch.object(driver.DPMDriver, '_get_block_device_mapping')
@mock.patch.object(driver.DPMDriver, '_get_partition_instance')
def test_spawn_context(self, mocked_get_part_inst):
def test_spawn_context(self, mocked_get_part_inst, mocked_get_bdm):
"""Make sure that context is provided to the PartitionInstance"""
mock_context = mock.Mock()
mock_inst = mock.Mock()
mocked_get_bdm.return_value = "bdm"
self.dpmdriver.spawn(mock_context, mock_inst, None, None, None, None,
[])
mocked_get_part_inst.assert_called_once_with(mock_inst, mock_context,
None)
"bdm")
@mock.patch.object(driver.DPMDriver, '_get_block_device_mapping')
@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()
def test_spawn_bdm(self, mocked_get_part_inst, mocked_get_bdm):
"""Ensure that block_device_mapping is provided to PartitionInstance"""
mocked_get_bdm.return_value = "bdm"
mock_inst = mock.Mock()
self.dpmdriver.spawn(None, mock_inst, None, None, None, None,
[], block_device_info=mock_bdm)
[], block_device_info=mock.Mock())
mocked_get_part_inst.assert_called_once_with(mock_inst, None, mock_bdm)
mocked_get_part_inst.assert_called_once_with(mock_inst, None, "bdm")
@mock.patch.object(vm.PartitionInstance, 'get_partition')
@mock.patch.object(vm.PartitionInstance, 'create')

View File

@ -310,7 +310,7 @@ class VmPartitionInstanceTestCase(TestCase):
'wwpn': wwpn}[prop]
mock_get_hba.return_value = mock_hba
self.partition_inst.block_device_info = [BLOCK_DEVICE]
self.partition_inst.block_device_mapping = [BLOCK_DEVICE]
self.partition_inst.set_boot_properties()
mock_gtw.assert_called_once_with(wwpn)

View File

@ -71,12 +71,12 @@ class DPMDriver(driver.ComputeDriver):
self.volume_drivers = self._get_volume_drivers()
def _get_partition_instance(self, instance, context=None,
block_device_info=None):
block_device_mapping=None):
if instance.image_ref != '':
raise exceptions.BootFromImageNotSupported()
else:
return vm.PartitionInstance(instance, self._cpc, context,
block_device_info)
block_device_mapping)
def init_host(self, host):
"""Driver initialization of the hypervisor node"""
@ -301,8 +301,8 @@ class DPMDriver(driver.ComputeDriver):
admin_password, allocations, network_info=None,
block_device_info=None):
inst = self._get_partition_instance(instance, context,
block_device_info)
bdm = self._get_block_device_mapping(block_device_info)
inst = self._get_partition_instance(instance, context, bdm)
# The creation of NICs is limited in DPM by the partitions
# boot-os-specific-parameters property. It is used to pass additional
@ -322,8 +322,7 @@ class DPMDriver(driver.ComputeDriver):
vif_obj = DPMVIF(vif_dict)
inst.attach_nic(vif_obj)
inst.set_boot_properties(
self._get_block_device_mapping(block_device_info))
inst.set_boot_properties()
inst.launch()
def destroy(self, context, instance, network_info, block_device_info=None,

View File

@ -119,12 +119,12 @@ def cpcsubset_partition_list(cpc):
class PartitionInstance(object):
def __init__(self, instance, cpc, context=None, block_device_info=None):
def __init__(self, instance, cpc, context=None, block_device_mapping=None):
self.instance = instance
self.cpc = cpc
self.partition = self.get_partition()
self.context = context
self.block_device_info = block_device_info
self.block_device_mapping = block_device_mapping
@staticmethod
def create_object(instance, cpc, flavor=None):
@ -315,10 +315,10 @@ class PartitionInstance(object):
return partition_wwpns
def _get_boot_bd(self):
# block_device_info is a list of block devices.
# block_device_mapping is a list of block devices.
# In DPM case we are mapping only the first device for now.
# TODO(andreas_s): Need to check whether this bd is marked as bootable
return BlockDevice(self.block_device_info[0])
return BlockDevice(self.block_device_mapping[0])
def set_boot_properties(self):
LOG.debug('set_boot_properties')