From a815d9da4cea708fea23ef8099eeb1b37d6e9d2e Mon Sep 17 00:00:00 2001 From: Vlad Spoiala1 Date: Tue, 14 Nov 2023 18:11:41 +0200 Subject: [PATCH] Fix total and free capacity calculations. Change-Id: I8cd3d15480a49e7bcdcb8a08cc82f6af637c7bef --- pyghmi/ipmi/oem/lenovo/imm.py | 2 +- pyghmi/redfish/oem/lenovo/xcc.py | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/pyghmi/ipmi/oem/lenovo/imm.py b/pyghmi/ipmi/oem/lenovo/imm.py index f718cf38..5cc9cad7 100644 --- a/pyghmi/ipmi/oem/lenovo/imm.py +++ b/pyghmi/ipmi/oem/lenovo/imm.py @@ -104,7 +104,7 @@ def fixup_str(propstr): def str_to_size(sizestr): if 'GB' in sizestr: sizestr = sizestr.replace('GB', '') - sizestr = int(float(sizestr) * 1024) + sizestr = int(float(sizestr) * 1000) elif 'GiB' in sizestr: sizestr = sizestr.replace('GiB', '') sizestr = int(float(sizestr) * 1024) diff --git a/pyghmi/redfish/oem/lenovo/xcc.py b/pyghmi/redfish/oem/lenovo/xcc.py index 322fcf9a..87ed08e7 100644 --- a/pyghmi/redfish/oem/lenovo/xcc.py +++ b/pyghmi/redfish/oem/lenovo/xcc.py @@ -102,6 +102,22 @@ def natural_sort(iterable): return sorted(iterable) +def str_to_size(sizestr): + if 'GB' in sizestr: + sizestr = sizestr.replace('GB', '') + sizestr = int(float(sizestr) * 1000) + elif 'GiB' in sizestr: + sizestr = sizestr.replace('GiB', '') + sizestr = int(float(sizestr) * 1024) + elif 'TB' in sizestr: + sizestr = sizestr.replace('TB', '') + sizestr = int(float(sizestr) * 1000 * 1000) + elif 'TiB' in sizestr: + sizestr = sizestr.replace('TiB', '') + sizestr = int(float(sizestr) * 1024 * 1024) + return sizestr + + class OEMHandler(generic.OEMHandler): logouturl = '/api/providers/logout' bmcname = 'XCC' @@ -708,12 +724,8 @@ class OEMHandler(generic.OEMHandler): spares.append(diskinfo) else: disks.append(diskinfo) - totalsize = pool['totalCapacityStr'].replace( - 'GB', '').replace('GiB', '') - totalsize = int(float(totalsize) * 1024) - freesize = pool['freeCapacityStr'].replace( - 'GB', '').replace('GiB', '') - freesize = int(float(freesize) * 1024) + totalsize = str_to_size(pool['totalCapacityStr']) + freesize = str_to_size(pool['freeCapacityStr']) pools.append(storage.Array( disks=disks, raid=pool['rdlvlstr'], volumes=volumes, id=(cid, pool['id']), hotspares=spares,