summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/utils/hw_inventory.py50
1 files changed, 27 insertions, 23 deletions
diff --git a/src/utils/hw_inventory.py b/src/utils/hw_inventory.py
index db24b83..2f38ae2 100644
--- a/src/utils/hw_inventory.py
+++ b/src/utils/hw_inventory.py
@@ -73,7 +73,9 @@ def _bytes_to_human(size):
# Utility methods for lshw json output processing
def _fill_computer_model(inventory, root):
- model = ' '.join([root['vendor'], root['product'], root['version']])
+ model = ' '.join([root.get('vendor', 'Unknown vendor'),
+ root.get('product', 'Unknown prouct'),
+ root.get('version', 'Unknown version')])
elem = HardwareElement(HardwareType.MODEL, model)
inventory.add_element(elem)
@@ -91,40 +93,40 @@ def _fill_bootmode(inventory):
def _process_core_firmware(inventory, obj):
- desc = ' '.join([obj['description'], obj['vendor'], obj['version']])
+ desc = ' '.join([obj.get('description', ''), obj.get('vendor', ''), obj.get('version', '')])
firmware_elem = HardwareElement(HardwareType.FIRMWARE, desc)
inventory.add_element(firmware_elem)
def _process_core_cpu(inventory, obj):
- cpu = obj['product']
+ cpu = obj.get('product', 'Unknown product')
cpu_elem = HardwareElement(HardwareType.CPU, cpu)
inventory.add_element(cpu_elem)
def _process_core_mem_bank(inventory, obj):
slot = obj.get('slot', 'Unknown slot')
- size = _bytes_to_human(obj['size']) if 'size' in obj else None
+ size = _bytes_to_human(obj.get('size', None))
if size:
- mem = ' '.join([obj['vendor'], obj['product'], size, f'({slot})'])
+ mem = ' '.join([obj.get('vendor', 'Unknown vendor'), obj.get('product', 'Unknown product'), size, f'({slot})'])
mem_elem = HardwareElement(HardwareType.MEMORY, mem)
inventory.add_element(mem_elem)
def _process_core_mem(inventory, obj):
- banks = obj['children']
+ banks = obj.get('children', [])
for bank in banks:
_process_core_mem_bank(inventory, bank)
def _process_core_pci_usb(inventory, obj):
- name = ' '.join([obj['vendor'], obj['product']])
+ name = ' '.join([obj.get('vendor', 'Unknown vendor'), obj.get('product', 'Unknown product')])
usb_elem = HardwareElement(HardwareType.USB, name)
inventory.add_element(usb_elem)
def _process_core_pci_display(inventory, obj):
- name = ' '.join([obj['vendor'], obj['product']])
+ name = ' '.join([obj.get('vendor', 'Unknown vendor'), obj.get('product', 'Unknown product')])
display_elem = HardwareElement(HardwareType.GRAPHICS, name)
inventory.add_element(display_elem)
@@ -132,26 +134,28 @@ def _process_core_pci_display(inventory, obj):
def _process_core_pci_network(inventory, obj):
link = obj.get('size', 'Unknown link speed')
if type(link) == int:
- if link >= 1000000000:
- linkh = f'{link/1e9} Gbit/s'
+ if link >= 1e9:
+ link_human = f'{link/1e9} Gbit/s'
else:
- linkh = f'{link/1e6} Mbit/s'
- name = ' '.join([obj['vendor'], obj['product'], f'({linkh})'])
+ link_human = f'{link/1e6} Mbit/s'
+ name = ' '.join([obj.get('vendor', 'Unknown vendor'), obj.get('product', 'Unknown product'), f'({link_human})'])
+ else:
+ name = ' '.join([obj.get('vendor', 'Unknown vendor'), obj.get('product', 'Unknown product')])
elem = HardwareElement(HardwareType.NETWORK, name)
inventory.add_element(elem)
def _process_core_pci_storage_child(inventory, obj):
- obj_id = obj['id']
+ obj_id = obj.get('id', '')
if obj_id.startswith('disk') or obj_id.startswith('nvme'):
- size = bytes_to_human(obj['size']) if 'size' in obj else 'Unknown size'
- name = ' '.join([obj['description'], obj['product'], size])
+ size = bytes_to_human(obj.get('size', 'Unknown size'))
+ name = ' '.join([obj.get('description', ''), obj.get('product', 'Unknown product'), size])
elem = HardwareElement(HardwareType.DISK, name)
inventory.add_element(elem)
def _process_core_pci_storage(inventory, obj):
- name = ' '.join([obj['vendor'], obj['product']])
+ name = ' '.join([obj.get('vendor', 'Unknown vendor'), obj.get('product', 'Unknown product')])
elem = HardwareElement(HardwareType.STORAGE, name)
inventory.add_element(elem)
# Disks follow a storage section
@@ -160,19 +164,19 @@ def _process_core_pci_storage(inventory, obj):
def _process_core_pci_disk(inventory, obj):
- name = ' '.join([obj['vendor'], obj['product']])
+ name = ' '.join([obj.get('vendor', 'Unknown vendor'), obj.get('product', 'Unknown product')])
elem = HardwareElement(HardwareType.DISK, name)
inventory.add_element(elem)
def _process_core_pci_multimedia(inventory, obj):
- name = ' '.join([obj['vendor'], obj['product']])
+ name = ' '.join([obj.get('vendor', 'Unknown vendor'), obj.get('product', 'Unknown product')])
elem = HardwareElement(HardwareType.MULTIMEDIA, name)
inventory.add_element(elem)
def _process_core_pci_child(inventory, obj):
- obj_id = obj['id']
+ obj_id = obj.get('id', '')
if obj_id.startswith('usb'):
_process_core_pci_usb(inventory, obj)
elif obj_id.startswith('display'):
@@ -197,19 +201,19 @@ def _process_core_pci(inventory, obj):
def _process_core_scsi_disk(inventory, obj):
vendor = obj.get('vendor', 'Unknown vendor')
- name = ' '.join([vendor, obj['product']])
+ name = ' '.join([vendor, obj.get('product', 'Unknown product')])
elem = HardwareElement(HardwareType.DISK, name)
inventory.add_element(elem)
def _process_core_scsi_cdrom(inventory, obj):
- name = ' '.join([obj['vendor'], obj['product']])
+ name = ' '.join([obj.get('vendor', 'Unknown vendor'), obj.get('product', 'Unknown product')])
elem = HardwareElement(HardwareType.CD, name)
inventory.add_element(elem)
def _process_core_scsi_child(inventory, obj):
- obj_id = obj['id']
+ obj_id = obj.get('id', '')
if obj_id.startswith('disk'):
_process_core_scsi_disk(inventory, obj)
elif obj_id.startswith('cdrom'):
@@ -217,7 +221,7 @@ def _process_core_scsi_child(inventory, obj):
def _process_core_scsi(inventory, obj):
- children = obj['children']
+ children = obj.get('children', [])
for child in children:
_process_core_scsi_child(inventory, child)