diff --git a/netbox_agent/lshw.py b/netbox_agent/lshw.py index dadc818..c7841a1 100644 --- a/netbox_agent/lshw.py +++ b/netbox_agent/lshw.py @@ -91,16 +91,18 @@ class LSHW(): encoding='utf8') ) - for device in nvme["Devices"]: - d = {} - d['logicalname'] = device["DevicePath"] - d['product'] = device["ModelNumber"] - d['serial'] = device["SerialNumber"] - d["version"] = device["Firmware"] - d['size'] = device["UsedSize"] - d['description'] = "NVME Disk" + d = {} + d["vendor"] = obj["vendor"] + d["version"] = obj["version"] + d["product"] = obj["product"] - self.disks.append(d) + d['description'] = "NVME Disk" + d['product'] = nvme["Devices"][0]["ModelNumber"] + d['size'] = nvme["Devices"][0]["PhysicalSize"] + d['serial'] = nvme["Devices"][0]["SerialNumber"] + d['logicalname'] = nvme["Devices"][0]["DevicePath"] + + self.disks.append(d) def find_cpus(self, obj): if "product" in obj: diff --git a/netbox_agent/server.py b/netbox_agent/server.py index 5db5513..687c964 100644 --- a/netbox_agent/server.py +++ b/netbox_agent/server.py @@ -1,6 +1,7 @@ import logging import socket import subprocess +import sys from pprint import pprint import netbox_agent.dmidecode as dmidecode @@ -49,10 +50,19 @@ class ServerBase(): return dc.get() def get_netbox_datacenter(self): - datacenter = nb.dcim.sites.get( - slug=self.get_datacenter() + dc = self.get_datacenter() + if dc is None: + logging.error("Specificing a datacenter (Site) is mandatory in Netbox") + sys.exit(1) + + nb_dc = nb.dcim.sites.get( + slug=dc, ) - return datacenter + if nb_dc is None: + logging.error("Site (slug: {}) has not been found".format(dc)) + sys.exit(1) + + return nb_dc def update_netbox_location(self, server): dc = self.get_datacenter() @@ -86,11 +96,18 @@ class ServerBase(): return rack.get() def get_netbox_rack(self): - rack = nb.dcim.racks.get( - name=self.get_rack(), - site_id=self.get_netbox_datacenter().id, + rack = self.get_rack() + datacenter = self.get_netbox_datacenter() + if not rack: + return None + if rack and not datacenter: + logging.error("Can't get rack if no datacenter is configured or found") + sys.exit(1) + + return nb.dcim.racks.get( + name=rack, + site_id=datacenter.id, ) - return rack def get_product_name(self): """ diff --git a/requirements.txt b/requirements.txt index 82b9382..c514916 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ pynetbox==4.3.1 -netaddr==0.7.20 +netaddr==0.7.19 netifaces==0.10.9 pyyaml==5.3.1 jsonargparse==2.31.0 diff --git a/setup.py b/setup.py index cf6adae..35bbc3e 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ setup( use_scm_version=True, install_requires=[ 'pynetbox==4.3.1', - 'netaddr==0.7.20', + 'netaddr==0.7.19', 'netifaces==0.10.9', 'pyyaml==5.3.1', 'jsonargparse==2.31.0',