create server/rack/chassis with Rack location if found (#34)
This commit is contained in:
parent
62e1f42abe
commit
770a97bc57
1 changed files with 11 additions and 7 deletions
|
@ -50,7 +50,7 @@ class ServerBase():
|
||||||
"""
|
"""
|
||||||
Return the Service Tag from dmidecode info
|
Return the Service Tag from dmidecode info
|
||||||
"""
|
"""
|
||||||
return self.system[0]['Serial Number']
|
return self.system[0]['Serial Number'].strip()
|
||||||
|
|
||||||
def get_hostname(self):
|
def get_hostname(self):
|
||||||
return '{}'.format(socket.gethostname())
|
return '{}'.format(socket.gethostname())
|
||||||
|
@ -79,7 +79,7 @@ class ServerBase():
|
||||||
def get_bios_release_date(self):
|
def get_bios_release_date(self):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def _netbox_create_blade_chassis(self, datacenter):
|
def _netbox_create_blade_chassis(self, datacenter, rack):
|
||||||
device_type = nb.dcim.device_types.get(
|
device_type = nb.dcim.device_types.get(
|
||||||
model=self.get_chassis(),
|
model=self.get_chassis(),
|
||||||
)
|
)
|
||||||
|
@ -99,10 +99,11 @@ class ServerBase():
|
||||||
serial=serial,
|
serial=serial,
|
||||||
device_role=device_role.id,
|
device_role=device_role.id,
|
||||||
site=datacenter.id if datacenter else None,
|
site=datacenter.id if datacenter else None,
|
||||||
|
rack=rack.id if rack else None,
|
||||||
)
|
)
|
||||||
return new_chassis
|
return new_chassis
|
||||||
|
|
||||||
def _netbox_create_blade(self, chassis, datacenter):
|
def _netbox_create_blade(self, chassis, datacenter, rack):
|
||||||
device_role = nb.dcim.device_roles.get(
|
device_role = nb.dcim.device_roles.get(
|
||||||
name='Blade',
|
name='Blade',
|
||||||
)
|
)
|
||||||
|
@ -122,6 +123,7 @@ class ServerBase():
|
||||||
device_type=device_type.id,
|
device_type=device_type.id,
|
||||||
parent_device=chassis.id,
|
parent_device=chassis.id,
|
||||||
site=datacenter.id if datacenter else None,
|
site=datacenter.id if datacenter else None,
|
||||||
|
rack=rack.id if rack else None,
|
||||||
)
|
)
|
||||||
return new_blade
|
return new_blade
|
||||||
|
|
||||||
|
@ -146,7 +148,7 @@ class ServerBase():
|
||||||
slot=slot
|
slot=slot
|
||||||
))
|
))
|
||||||
|
|
||||||
def _netbox_create_server(self, datacenter):
|
def _netbox_create_server(self, datacenter, rack):
|
||||||
device_role = nb.dcim.device_roles.get(
|
device_role = nb.dcim.device_roles.get(
|
||||||
name='Server',
|
name='Server',
|
||||||
)
|
)
|
||||||
|
@ -165,6 +167,7 @@ class ServerBase():
|
||||||
device_role=device_role.id,
|
device_role=device_role.id,
|
||||||
device_type=device_type.id,
|
device_type=device_type.id,
|
||||||
site=datacenter.id if datacenter else None,
|
site=datacenter.id if datacenter else None,
|
||||||
|
rack=rack.id if rack else None,
|
||||||
)
|
)
|
||||||
return new_server
|
return new_server
|
||||||
|
|
||||||
|
@ -174,6 +177,7 @@ class ServerBase():
|
||||||
def netbox_create(self):
|
def netbox_create(self):
|
||||||
logging.debug('Creating Server..')
|
logging.debug('Creating Server..')
|
||||||
datacenter = self.get_netbox_datacenter()
|
datacenter = self.get_netbox_datacenter()
|
||||||
|
rack = self.get_netbox_rack()
|
||||||
if self.is_blade():
|
if self.is_blade():
|
||||||
# let's find the blade
|
# let's find the blade
|
||||||
serial = self.get_service_tag()
|
serial = self.get_service_tag()
|
||||||
|
@ -187,16 +191,16 @@ class ServerBase():
|
||||||
serial=self.get_chassis_service_tag()
|
serial=self.get_chassis_service_tag()
|
||||||
)
|
)
|
||||||
if not chassis:
|
if not chassis:
|
||||||
chassis = self._netbox_create_blade_chassis(datacenter)
|
chassis = self._netbox_create_blade_chassis(datacenter, rack)
|
||||||
|
|
||||||
blade = self._netbox_create_blade(chassis, datacenter)
|
blade = self._netbox_create_blade(chassis, datacenter, rack)
|
||||||
|
|
||||||
# Set slot for blade
|
# Set slot for blade
|
||||||
self._netbox_set_blade_slot(chassis, blade)
|
self._netbox_set_blade_slot(chassis, blade)
|
||||||
else:
|
else:
|
||||||
server = nb.dcim.devices.get(serial=self.get_service_tag())
|
server = nb.dcim.devices.get(serial=self.get_service_tag())
|
||||||
if not server:
|
if not server:
|
||||||
self._netbox_create_server(datacenter)
|
self._netbox_create_server(datacenter, rack)
|
||||||
|
|
||||||
self.network = Network(server=self)
|
self.network = Network(server=self)
|
||||||
self.network.create_netbox_network_cards()
|
self.network.create_netbox_network_cards()
|
||||||
|
|
Loading…
Reference in a new issue