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:
parent
bc04ba1279
commit
ae261d2405
|
@ -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')
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue