From 3966871f47f9d2acb209647c618dd824abc27807 Mon Sep 17 00:00:00 2001 From: Riccardo Pittau Date: Thu, 9 Apr 2020 14:58:42 +0200 Subject: [PATCH] Move logic to calculate raid sectors to raid_utils Some more raid related logic moved to raid_utils. Change-Id: I08c73ad14e5b01ebac2490b83997c5452506d4a2 --- ironic_python_agent/hardware.py | 20 +++----------------- ironic_python_agent/raid_utils.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 17 deletions(-) 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