From 55fe15755a947f9e3217ed59f083a10bd716eb23 Mon Sep 17 00:00:00 2001 From: Henrik Pingel Date: Fri, 1 Aug 2025 13:34:56 +0200 Subject: [PATCH] fix: Handle os-release without version or codename --- netbox_agent/misc.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/netbox_agent/misc.py b/netbox_agent/misc.py index 2bf89422..537dc5d4 100644 --- a/netbox_agent/misc.py +++ b/netbox_agent/misc.py @@ -29,13 +29,17 @@ def get_device_type(type): def get_device_platform(device_platform): if device_platform is None: - try: - linux_distribution = "{name} {version_id} {release_codename}".format(**distro.os_release_info()) - - if not linux_distribution: - return None - except (ModuleNotFoundError, NameError, AttributeError): - return None + os_release = distro.os_release_info() + # Only `name` is a required field in os-release + for template in ( + "{name} {version_id} {release_codename}", + "{name} {version_id}", + ): + with suppress(KeyError): + linux_distribution = template.format(**os_release) + break + else: + linux_distribution = os_release["name"] else: linux_distribution = device_platform @@ -78,12 +82,12 @@ def get_hostname(config): return subprocess.getoutput(config.hostname_cmd) def verify_serial(serial: str): - + serial_number_pattern = r'^(?=.*\d)[A-Za-z0-9]{1,12}$' if re.match(serial_number_pattern, serial): return True - + return False def create_netbox_tags(tags):