update
This commit is contained in:
parent
bc031c32ca
commit
741f241607
4 changed files with 66 additions and 31 deletions
|
@ -18,14 +18,14 @@ MANUFACTURERS = {
|
||||||
def run(config):
|
def run(config):
|
||||||
manufacturer = dmidecode.get_by_type('Chassis')[0].get('Manufacturer')
|
manufacturer = dmidecode.get_by_type('Chassis')[0].get('Manufacturer')
|
||||||
server = MANUFACTURERS[manufacturer](dmi=dmidecode)
|
server = MANUFACTURERS[manufacturer](dmi=dmidecode)
|
||||||
print(config.netbox.url)
|
|
||||||
print(config.netbox.token)
|
|
||||||
if config.debug:
|
if config.debug:
|
||||||
server.print_debug()
|
server.print_debug()
|
||||||
if config.register:
|
if config.register:
|
||||||
server.netbox_create()
|
server.netbox_create(config)
|
||||||
if config.update_all:
|
if config.update_all or config.update_network or config.update_location or \
|
||||||
server.netbox_update()
|
config.update_inventory:
|
||||||
|
server.netbox_update(config)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,19 +15,6 @@ INVENTORY_TAG = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def create_tags():
|
|
||||||
for key, tag in INVENTORY_TAG.items():
|
|
||||||
nb_tag = nb.extras.tags.get(
|
|
||||||
name=tag['name']
|
|
||||||
)
|
|
||||||
if not nb_tag:
|
|
||||||
nb_tag = nb.extras.tags.create(
|
|
||||||
name=tag['name'],
|
|
||||||
slug=tag['slug'],
|
|
||||||
comments=tag['name'],
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Inventory():
|
class Inventory():
|
||||||
"""
|
"""
|
||||||
Better Inventory items coming, see:
|
Better Inventory items coming, see:
|
||||||
|
@ -52,14 +39,25 @@ class Inventory():
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, server):
|
def __init__(self, server):
|
||||||
if config.inventory is None or config.update_inventory is None:
|
self.create_netbox_tags()
|
||||||
return None
|
|
||||||
self.server = server
|
self.server = server
|
||||||
netbox_server = self.server.get_netbox_server()
|
netbox_server = self.server.get_netbox_server()
|
||||||
self.device_id = netbox_server.id if netbox_server else None
|
self.device_id = netbox_server.id if netbox_server else None
|
||||||
self.raid = None
|
self.raid = None
|
||||||
self.disks = []
|
self.disks = []
|
||||||
|
|
||||||
|
def create_netbox_tags():
|
||||||
|
for key, tag in INVENTORY_TAG.items():
|
||||||
|
nb_tag = nb.extras.tags.get(
|
||||||
|
name=tag['name']
|
||||||
|
)
|
||||||
|
if not nb_tag:
|
||||||
|
nb_tag = nb.extras.tags.create(
|
||||||
|
name=tag['name'],
|
||||||
|
slug=tag['slug'],
|
||||||
|
comments=tag['name'],
|
||||||
|
)
|
||||||
|
|
||||||
def get_cpus(self):
|
def get_cpus(self):
|
||||||
model = None
|
model = None
|
||||||
nb = None
|
nb = None
|
||||||
|
@ -315,7 +313,7 @@ class Inventory():
|
||||||
self.create_netbox_memory(memory)
|
self.create_netbox_memory(memory)
|
||||||
|
|
||||||
def create(self):
|
def create(self):
|
||||||
if not config.inventory:
|
if config.inventory is None:
|
||||||
return False
|
return False
|
||||||
self.create_netbox_cpus()
|
self.create_netbox_cpus()
|
||||||
self.create_netbox_memory()
|
self.create_netbox_memory()
|
||||||
|
|
|
@ -503,6 +503,7 @@ class Network():
|
||||||
|
|
||||||
def update_netbox_network_cards(self):
|
def update_netbox_network_cards(self):
|
||||||
if config.update_all is None or config.update_network is None:
|
if config.update_all is None or config.update_network is None:
|
||||||
|
print(config)
|
||||||
return None
|
return None
|
||||||
logging.debug('Updating NIC...')
|
logging.debug('Updating NIC...')
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,33 @@ class ServerBase():
|
||||||
)
|
)
|
||||||
return datacenter
|
return datacenter
|
||||||
|
|
||||||
|
def update_netbox_location(self, server):
|
||||||
|
dc = self.get_datacenter()
|
||||||
|
rack = self.get_rack()
|
||||||
|
nb_rack = self.get_netbox_rack()
|
||||||
|
nb_dc = self.get_netbox_datacenter()
|
||||||
|
|
||||||
|
update = False
|
||||||
|
if dc and server.site.slug != nb_dc.slug:
|
||||||
|
logging.info('Datacenter location has changed from {} to {}, updating'.format(
|
||||||
|
server.site.slug,
|
||||||
|
nb_dc.slug,
|
||||||
|
))
|
||||||
|
update = True
|
||||||
|
server.site = nb_dc.id
|
||||||
|
|
||||||
|
if rack and server.rack != nb_rack:
|
||||||
|
logging.info('Rack location has changed from {} to {}, updating'.format(
|
||||||
|
server.rack,
|
||||||
|
nb_rack,
|
||||||
|
))
|
||||||
|
update = True
|
||||||
|
server.rack = nb_rack
|
||||||
|
if nb_rack is None:
|
||||||
|
server.face = None
|
||||||
|
server.position = None
|
||||||
|
return update, server
|
||||||
|
|
||||||
def get_rack(self):
|
def get_rack(self):
|
||||||
rack = Rack()
|
rack = Rack()
|
||||||
return rack.get()
|
return rack.get()
|
||||||
|
@ -175,7 +202,7 @@ class ServerBase():
|
||||||
def get_netbox_server(self):
|
def get_netbox_server(self):
|
||||||
return nb.dcim.devices.get(serial=self.get_service_tag())
|
return nb.dcim.devices.get(serial=self.get_service_tag())
|
||||||
|
|
||||||
def netbox_create(self):
|
def netbox_create(self, config):
|
||||||
logging.debug('Creating Server..')
|
logging.debug('Creating Server..')
|
||||||
datacenter = self.get_netbox_datacenter()
|
datacenter = self.get_netbox_datacenter()
|
||||||
rack = self.get_netbox_rack()
|
rack = self.get_netbox_rack()
|
||||||
|
@ -205,8 +232,9 @@ class ServerBase():
|
||||||
|
|
||||||
self.network = Network(server=self)
|
self.network = Network(server=self)
|
||||||
self.network.create_netbox_network_cards()
|
self.network.create_netbox_network_cards()
|
||||||
self.inventory = Inventory(server=self)
|
if config.inventory:
|
||||||
self.inventory.create()
|
self.inventory = Inventory(server=self)
|
||||||
|
self.inventory.create()
|
||||||
logging.debug('Server created!')
|
logging.debug('Server created!')
|
||||||
|
|
||||||
def _netbox_update_chassis_for_blade(self, server, datacenter):
|
def _netbox_update_chassis_for_blade(self, server, datacenter):
|
||||||
|
@ -235,7 +263,7 @@ class ServerBase():
|
||||||
# Set slot for blade
|
# Set slot for blade
|
||||||
self._netbox_set_blade_slot(chassis, server)
|
self._netbox_set_blade_slot(chassis, server)
|
||||||
|
|
||||||
def netbox_update(self):
|
def netbox_update(self, config):
|
||||||
"""
|
"""
|
||||||
Netbox method to update info about our server/blade
|
Netbox method to update info about our server/blade
|
||||||
|
|
||||||
|
@ -246,11 +274,12 @@ class ServerBase():
|
||||||
* new network infos
|
* new network infos
|
||||||
"""
|
"""
|
||||||
logging.debug('Updating Server...')
|
logging.debug('Updating Server...')
|
||||||
|
|
||||||
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:
|
||||||
raise Exception("The server (Serial: {}) isn't yet registered in Netbox, register"
|
raise Exception("The server (Serial: {}) isn't yet registered in Netbox, register"
|
||||||
'it before updating it'.format(self.get_service_tag()))
|
'it before updating it'.format(self.get_service_tag()))
|
||||||
update = False
|
update = 0
|
||||||
if self.is_blade():
|
if self.is_blade():
|
||||||
datacenter = self.get_netbox_datacenter()
|
datacenter = self.get_netbox_datacenter()
|
||||||
# if it's already linked to a chassis
|
# if it's already linked to a chassis
|
||||||
|
@ -269,14 +298,21 @@ class ServerBase():
|
||||||
# for every other specs
|
# for every other specs
|
||||||
# check hostname
|
# check hostname
|
||||||
if server.name != self.get_hostname():
|
if server.name != self.get_hostname():
|
||||||
update = True
|
update += 1
|
||||||
server.hostname = self.get_hostname()
|
server.hostname = self.get_hostname()
|
||||||
|
|
||||||
|
if config.update_all or config.update_location:
|
||||||
|
ret, server = self.update_netbox_location(server)
|
||||||
|
update += ret
|
||||||
|
|
||||||
# check network cards
|
# check network cards
|
||||||
self.network = Network(server=self)
|
if config.update_all or config.update_network:
|
||||||
self.network.update_netbox_network_cards()
|
self.network = Network(server=self)
|
||||||
|
self.network.update_netbox_network_cards()
|
||||||
# update inventory
|
# update inventory
|
||||||
self.inventory = Inventory(server=self)
|
if config.update_all or config.update_inventory:
|
||||||
self.inventory.update()
|
self.inventory = Inventory(server=self)
|
||||||
|
self.inventory.update()
|
||||||
if update:
|
if update:
|
||||||
server.save()
|
server.save()
|
||||||
logging.debug('Finished updating Server!')
|
logging.debug('Finished updating Server!')
|
||||||
|
|
Loading…
Add table
Reference in a new issue