fix: privilege nvme-cli over lshw, fix NoneType size for nvme

This commit is contained in:
Cyril Levis 2022-04-25 15:20:23 +02:00
commit aab89b1b93
No known key found for this signature in database
GPG key ID: 6DB88737C11F5A48
2 changed files with 23 additions and 16 deletions

View file

@ -341,7 +341,9 @@ class Inventory():
for disk in self.lshw.get_hw_linux("storage"):
if self.is_virtual_disk(disk, raid_devices):
continue
size =int(disk.get('size', 0)) / 1073741824
size = disk.get('size', 0)
if size is not None:
size = int(size) / 1073741824
d = {
"name": "",
'Size': '{} GB'.format(size),

View file

@ -86,18 +86,8 @@ class LSHW():
})
def find_storage(self, obj):
if "children" in obj:
for device in obj["children"]:
self.disks.append({
"logicalname": device.get("logicalname"),
"product": device.get("product"),
"serial": device.get("serial"),
"version": device.get("version"),
"size": device.get("size"),
"description": device.get("description"),
"type": device.get("description"),
})
elif "nvme" in obj["configuration"]["driver"]:
serials = []
if "nvme" in obj["configuration"]["driver"]:
if not is_tool('nvme'):
logging.error('nvme-cli >= 1.0 does not seem to be installed')
return
@ -108,13 +98,14 @@ class LSHW():
encoding='utf8')
)
for device in nvme["Devices"]:
serials += device["SerialNumber"].strip()
d = {
'logicalname': device["DevicePath"],
'product': device["ModelNumber"],
'serial': device["SerialNumber"],
'serial': device["SerialNumber"].strip(),
"version": device["Firmware"],
'description': "NVME",
'type': "NVME",
'description': "NVMe device",
'type': "NVMe device",
}
if "UsedSize" in device:
d['size'] = device["UsedSize"]
@ -124,6 +115,20 @@ class LSHW():
except Exception:
pass
if "children" in obj:
for device in obj["children"]:
if device.get("serial").strip() in serials:
continue
self.disks.append({
"logicalname": device.get("logicalname"),
"product": device.get("product"),
"serial": device.get("serial").strip(),
"version": device.get("version"),
"size": device.get("size"),
"description": device.get("description"),
"type": device.get("description"),
})
def find_cpus(self, obj):
if "product" in obj:
self.cpus.append({