Merge "Revert "Software raid: mbr/gpt partition table alternative""

This commit is contained in:
Zuul 2019-09-23 15:08:27 +00:00 committed by Gerrit Code Review
commit af1e32ba41
3 changed files with 6 additions and 79 deletions

View File

@ -1443,19 +1443,6 @@ class GenericHardwareManager(HardwareManager):
LOG.debug("No target_raid_config found")
return {}
partition_table_type = 'msdos'
# If explicitely specified by caller let's follow orders
instance_info = node.get('instance_info', {})
capabilities = instance_info.get('capabilities', {})
specified_table_type = capabilities.get('disk_label')
if specified_table_type:
if specified_table_type not in ['msdos', 'gpt']:
msg = ("Invalid disk_label capability. "
"Should either be 'msdos' or 'gpt'")
raise errors.SoftwareRAIDError(msg)
partition_table_type = specified_table_type
# No 'software' controller: do nothing. If 'controller' is
# set to 'software' on only one of the drives, the validation
# code will catch it.
@ -1488,14 +1475,15 @@ class GenericHardwareManager(HardwareManager):
partitions)
raise errors.SoftwareRAIDError(msg)
# Create an MBR or GPT partition table on each disk.
parted_start_dict = {}
# Create an MBR partition table on each disk.
# TODO(arne_wiebalck): Check if GPT would work as well.
for block_device in block_devices:
LOG.info("Creating partition table on {}".format(
block_device.name))
try:
utils.execute('parted', block_device.name, '-s', '--',
'mklabel', partition_table_type)
'mklabel', 'msdos')
except processutils.ProcessExecutionError as e:
msg = "Failed to create partition table on {}: {}".format(
block_device.name, e)

View File

@ -2710,29 +2710,7 @@ class TestGenericHardwareManager(base.IronicAgentTest):
@mock.patch.object(utils, 'execute', autospec=True)
def test_create_configuration(self, mocked_execute):
self._test_create_configuration(mocked_execute, 'msdos')
@mock.patch.object(utils, 'execute', autospec=True)
def test_create_configuration_disk_label_specified(
self, mocked_execute):
# Override gpt default choice with msdos
node = {
'uuid': 'hello',
'instance_info': {
'capabilities': {
'disk_label': 'gpt'
}
}
}
self._test_create_configuration(mocked_execute, 'msdos')
self._test_create_configuration(mocked_execute, 'gpt', node)
def _test_create_configuration(self, mocked_execute,
expected_partition_table_type, node=None):
if node is None:
node = self.node
node = self.node
raid_config = {
"logical_disks": [
{
@ -2769,10 +2747,10 @@ class TestGenericHardwareManager(base.IronicAgentTest):
mocked_execute.assert_has_calls([
mock.call('parted', '/dev/sda', '-s', '--', 'mklabel',
expected_partition_table_type),
'msdos'),
mock.call('sgdisk', '-F', '/dev/sda'),
mock.call('parted', '/dev/sdb', '-s', '--', 'mklabel',
expected_partition_table_type),
'msdos'),
mock.call('sgdisk', '-F', '/dev/sdb'),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
@ -3031,41 +3009,6 @@ class TestGenericHardwareManager(base.IronicAgentTest):
self.hardware.create_configuration,
self.node, [])
@mock.patch.object(utils, 'execute', autospec=True)
def test_create_configuration_bad_disk_label(self, mocked_execute):
# Override gpt default choice with msdos
node = {
'uuid': 'hello',
'instance_info': {
'capabilities': {
'disk_label': 'invalid'
}
}
}
# pass a sensible target_raid_config
raid_config = {
"logical_disks": [
{
"size_gb": "100",
"raid_level": "1",
"controller": "software",
},
{
"size_gb": "MAX",
"raid_level": "0",
"controller": "software",
},
]
}
node['target_raid_config'] = raid_config
error_regex = \
"Invalid disk_label capability. Should either be 'msdos' or 'gpt'"
self.assertRaisesRegex(errors.SoftwareRAIDError, error_regex,
self.hardware.create_configuration,
node, [])
def test_create_configuration_empty_target_raid_config(self):
self.node['target_raid_config'] = {}
result = self.hardware.create_configuration(self.node, [])

View File

@ -1,4 +0,0 @@
---
features:
- Adds the ability to specify the partition table type when creating RAID.
When not specified, the type is set to ``msdos`` (MBR).