Add Supermicro as a vendor
This commit is contained in:
parent
5b5eb8f16b
commit
fac1d5e5e2
6 changed files with 29 additions and 2 deletions
0
netbox_agent/vendors/__init__.py
vendored
Normal file
0
netbox_agent/vendors/__init__.py
vendored
Normal file
31
netbox_agent/vendors/dell.py
vendored
Normal file
31
netbox_agent/vendors/dell.py
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
from netbox_agent.server import ServerBase
|
||||
|
||||
|
||||
class DellHost(ServerBase):
|
||||
def is_blade(self):
|
||||
return self.get_product_name().startswith('PowerEdge M')
|
||||
|
||||
def get_blade_slot(self):
|
||||
"""
|
||||
Return blade slot
|
||||
dmidecode output is:
|
||||
` Location In Chassis: Slot 03`
|
||||
"""
|
||||
if self.is_blade():
|
||||
return self.dmi.get_by_type('Baseboard')[0].get('Location In Chassis')
|
||||
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()
|
||||
52
netbox_agent/vendors/hp.py
vendored
Normal file
52
netbox_agent/vendors/hp.py
vendored
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
from netbox_agent.server import ServerBase
|
||||
|
||||
|
||||
class HPHost(ServerBase):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(HPHost, self).__init__(*args, **kwargs)
|
||||
if self.is_blade():
|
||||
self.hp_rack_locator = self._find_rack_locator()
|
||||
|
||||
def is_blade(self):
|
||||
return self.get_product_name().startswith('ProLiant BL')
|
||||
|
||||
def _find_rack_locator(self):
|
||||
"""
|
||||
Depending on the server, the type of the `HP ProLiant System/Rack Locator`
|
||||
can change.
|
||||
So we need to find it every time
|
||||
"""
|
||||
# FIXME: make a dmidecode function get_by_dminame() ?
|
||||
if self.is_blade():
|
||||
locator = self.dmi.get_by_type(204)
|
||||
if self.get_product_name() == 'ProLiant BL460c Gen10':
|
||||
locator = locator[0]['Strings']
|
||||
return {
|
||||
'Enclosure Model': locator[2].strip(),
|
||||
'Enclosure Name': locator[0].strip(),
|
||||
'Server Bay': locator[3].strip(),
|
||||
'Enclosure Serial': locator[4].strip(),
|
||||
}
|
||||
return locator[0]
|
||||
|
||||
def get_blade_slot(self):
|
||||
if self.is_blade():
|
||||
return 'Bay {}'.format(
|
||||
int(self.hp_rack_locator['Server Bay'].strip())
|
||||
)
|
||||
return None
|
||||
|
||||
def get_chassis(self):
|
||||
if self.is_blade():
|
||||
return self.hp_rack_locator['Enclosure Model'].strip()
|
||||
return self.get_product_name()
|
||||
|
||||
def get_chassis_name(self):
|
||||
if not self.is_blade():
|
||||
return None
|
||||
return self.hp_rack_locator['Enclosure Name'].strip()
|
||||
|
||||
def get_chassis_service_tag(self):
|
||||
if self.is_blade():
|
||||
return self.hp_rack_locator['Enclosure Serial'].strip()
|
||||
return self.get_service_tag()
|
||||
25
netbox_agent/vendors/supermicro.py
vendored
Normal file
25
netbox_agent/vendors/supermicro.py
vendored
Normal file
|
|
@ -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()
|
||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue