diff --git a/ironic_python_agent/hardware.py b/ironic_python_agent/hardware.py index b29d591cd..7ae4c84a9 100644 --- a/ironic_python_agent/hardware.py +++ b/ironic_python_agent/hardware.py @@ -1670,23 +1670,9 @@ class GenericHardwareManager(HardwareManager): disk_names = logical_disk['block_devices'] for device in disk_names: start = parted_start_dict[device] - - if isinstance(start, int): - start_str = '%dGiB' % start - else: - start_str = start - - if psize == -1: - end_str = '-1' - end = '-1' - else: - if isinstance(start, int): - end = start + psize - else: - # First partition case, start is sth like 2048s - end = psize - end_str = '%dGiB' % end - + start_str, end_str, end = ( + raid_utils.calc_raid_partition_sectors(psize, start) + ) try: LOG.debug("Creating partition on {}: {} {}".format( device, start_str, end_str)) diff --git a/ironic_python_agent/raid_utils.py b/ironic_python_agent/raid_utils.py index b50164e87..1e6298889 100644 --- a/ironic_python_agent/raid_utils.py +++ b/ironic_python_agent/raid_utils.py @@ -103,3 +103,32 @@ def calculate_raid_start(target_boot_mode, partition_table_type, dev_name): raid_start = "{}s".format(out.splitlines()[-1]) return raid_start + + +def calc_raid_partition_sectors(psize, start): + """Calculates end sector and converts start and end sectors including + + the unit of measure, compatible with parted. + :param psize: size of the raid partition + :param start: start sector of the raid partion in integer format + :return: start and end sector in parted compatible format, end sector + as integer + """ + + if isinstance(start, int): + start_str = '%dGiB' % start + else: + start_str = start + + if psize == -1: + end_str = '-1' + end = '-1' + else: + if isinstance(start, int): + end = start + psize + else: + # First partition case, start is sth like 2048s + end = psize + end_str = '%dGiB' % end + + return start_str, end_str, end