live: hw_inventory: fix empty pci storage size bug

When a client's hardware presents an empty pci storage child there is an
invalid call to _bytes_to_human a string is supplied as a default value
if the storage child does not present a 'size' attribute.

Fix this by checking if 'size' is present in the JSON output from lshw.
If size is present then map the bytes to a human readable string using
_bytes_to_human, if no size is present then use 'Empty slot' to indicate
that the memory bank is not being used.
master
Jose M. Guisado 2023-10-18 13:05:39 +02:00
parent 59eac6d0d5
commit b49ec83bcd
1 changed files with 1 additions and 1 deletions

View File

@ -151,7 +151,7 @@ def _process_core_pci_network(inventory, obj):
def _process_core_pci_storage_child(inventory, obj):
obj_id = obj.get('id', '')
if obj_id.startswith('disk') or obj_id.startswith('nvme'):
size = _bytes_to_human(obj.get('size', 'Unknown size'))
size = _bytes_to_human(obj['size']) if 'size' in obj else 'Unknown size'
name = ' '.join([obj.get('description', ''), obj.get('product', 'Unknown product'), size])
elem = HardwareElement(HardwareType.DISK, name)
inventory.add_element(elem)