From 551d14af7078a71f016576dd89c94fd005f24173 Mon Sep 17 00:00:00 2001 From: Solvik Blum Date: Sat, 28 Nov 2020 12:50:20 +0100 Subject: [PATCH] fix ugly supermicro blade support --- netbox_agent/vendors/supermicro.py | 10 +++++++--- tests/server.py | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/netbox_agent/vendors/supermicro.py b/netbox_agent/vendors/supermicro.py index 794a8f5..0042377 100644 --- a/netbox_agent/vendors/supermicro.py +++ b/netbox_agent/vendors/supermicro.py @@ -21,7 +21,7 @@ class SupermicroHost(ServerBase): self.manufacturer = 'Supermicro' def is_blade(self): - product_name = self.get_product_name() + product_name = self.system[0]['Product Name'].strip() # Blades blade = product_name.startswith('SBI') blade |= product_name.startswith('SBA') @@ -44,19 +44,23 @@ class SupermicroHost(ServerBase): return None def get_service_tag(self): + if self.is_blade(): + return self.baseboard[0]['Serial Number'].strip() return self.system[0]['Serial Number'].strip() def get_product_name(self): + if self.is_blade(): + return self.baseboard[0]['Product Name'].strip() return self.system[0]['Product Name'].strip() def get_chassis(self): if self.is_blade(): - return self.chassis[0]['Product Name'].strip() + return self.system[0]['Product Name'].strip() return self.get_product_name() def get_chassis_service_tag(self): if self.is_blade(): - return self.chassis[0]['Serial Number'].strip() + return self.system[0]['Serial Number'].strip() return self.get_service_tag() def get_chassis_name(self): diff --git a/tests/server.py b/tests/server.py index 3d024a2..541e2f7 100644 --- a/tests/server.py +++ b/tests/server.py @@ -49,6 +49,7 @@ def test_supermicro_blade(fixture): server = SupermicroHost(dmi) assert server.get_service_tag() == 'E235735X6B01665' assert server.get_chassis_service_tag() == 'C9390AF40A20098' + assert server.get_chassis() == 'SYS-5039MS-H12TRF-OS012' assert server.is_blade() is True @@ -60,6 +61,7 @@ def test_supermicro_pizza(fixture): dmi = parse(fixture) server = SupermicroHost(dmi) assert server.get_service_tag() == 'A177950X7709591' + assert server.get_chassis() == 'SYS-6018R-TDTPR' assert server.is_blade() is False -- 2.48.1