diff --git a/netbox_agent/cli.py b/netbox_agent/cli.py index d7ee2bb..6d2fc80 100644 --- a/netbox_agent/cli.py +++ b/netbox_agent/cli.py @@ -1,14 +1,16 @@ import argparse -from netbox_agent.dell.dell import DellHost +from netbox_agent.vendors.dell import DellHost import netbox_agent.dmidecode as dmidecode -from netbox_agent.hp.hp import HPHost +from netbox_agent.vendors.hp import HPHost +from netbox_agent.vendors.supermicro import SupermicroHost from netbox_agent.logging import logging # NOQA MANUFACTURERS = { 'Dell Inc.': DellHost, 'HP': HPHost, 'HPE': HPHost, + 'Supermicro': SupermicroHost, } diff --git a/netbox_agent/hp/__init__.py b/netbox_agent/hp/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/netbox_agent/dell/__init__.py b/netbox_agent/vendors/__init__.py similarity index 100% rename from netbox_agent/dell/__init__.py rename to netbox_agent/vendors/__init__.py diff --git a/netbox_agent/dell/dell.py b/netbox_agent/vendors/dell.py similarity index 100% rename from netbox_agent/dell/dell.py rename to netbox_agent/vendors/dell.py diff --git a/netbox_agent/hp/hp.py b/netbox_agent/vendors/hp.py similarity index 100% rename from netbox_agent/hp/hp.py rename to netbox_agent/vendors/hp.py diff --git a/netbox_agent/vendors/supermicro.py b/netbox_agent/vendors/supermicro.py new file mode 100644 index 0000000..115ab4a --- /dev/null +++ b/netbox_agent/vendors/supermicro.py @@ -0,0 +1,25 @@ +from netbox_agent.server import ServerBase + + +class SupermicroHost(ServerBase): + def is_blade(self): + return self.get_product_name().startswith('SBI') + + def get_blade_slot(self): + # No supermicro on hands + return None + + def get_chassis_name(self): + if not self.is_blade(): + return None + return 'Chassis {}'.format(self.get_service_tag()) + + def get_chassis(self): + if self.is_blade(): + return self.dmi.get_by_type('Chassis')[0]['Version'] + return self.get_product_name() + + def get_chassis_service_tag(self): + if self.is_blade(): + return self.dmi.get_by_type('Chassis')[0]['Serial Number'] + return self.get_service_tag()