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):
|
||||
manufacturer = dmidecode.get_by_type('Chassis')[0].get('Manufacturer')
|
||||
server = MANUFACTURERS[manufacturer](dmi=dmidecode)
|
||||
print(config.netbox.url)
|
||||
print(config.netbox.token)
|
||||
|
||||
if config.debug:
|
||||
server.print_debug()
|
||||
if config.register:
|
||||
server.netbox_create()
|
||||
if config.update_all:
|
||||
server.netbox_update()
|
||||
server.netbox_create(config)
|
||||
if config.update_all or config.update_network or config.update_location or \
|
||||
config.update_inventory:
|
||||
server.netbox_update(config)
|
||||
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():
|
||||
"""
|
||||
Better Inventory items coming, see:
|
||||
|
@ -52,14 +39,25 @@ class Inventory():
|
|||
"""
|
||||
|
||||
def __init__(self, server):
|
||||
if config.inventory is None or config.update_inventory is None:
|
||||
return None
|
||||
self.create_netbox_tags()
|
||||
self.server = server
|
||||
netbox_server = self.server.get_netbox_server()
|
||||
self.device_id = netbox_server.id if netbox_server else None
|
||||
self.raid = None
|
||||
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):
|
||||
model = None
|
||||
nb = None
|
||||
|
@ -315,7 +313,7 @@ class Inventory():
|
|||
self.create_netbox_memory(memory)
|
||||
|
||||
def create(self):
|
||||
if not config.inventory:
|
||||
if config.inventory is None:
|
||||
return False
|
||||
self.create_netbox_cpus()
|
||||
self.create_netbox_memory()
|
||||
|
|
|
@ -503,6 +503,7 @@ class Network():
|
|||
|
||||
def update_netbox_network_cards(self):
|
||||
if config.update_all is None or config.update_network is None:
|
||||
print(config)
|
||||
return None
|
||||
logging.debug('Updating NIC...')
|
||||
|
||||
|
|
|
@ -30,6 +30,33 @@ class ServerBase():
|
|||
)
|
||||
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):
|
||||
rack = Rack()
|
||||
return rack.get()
|
||||
|
@ -175,7 +202,7 @@ class ServerBase():
|
|||
def get_netbox_server(self):
|
||||
return nb.dcim.devices.get(serial=self.get_service_tag())
|
||||
|
||||
def netbox_create(self):
|
||||
def netbox_create(self, config):
|
||||
logging.debug('Creating Server..')
|
||||
datacenter = self.get_netbox_datacenter()
|
||||
rack = self.get_netbox_rack()
|
||||
|
@ -205,8 +232,9 @@ class ServerBase():
|
|||
|
||||
self.network = Network(server=self)
|
||||
self.network.create_netbox_network_cards()
|
||||
self.inventory = Inventory(server=self)
|
||||
self.inventory.create()
|
||||
if config.inventory:
|
||||
self.inventory = Inventory(server=self)
|
||||
self.inventory.create()
|
||||
logging.debug('Server created!')
|
||||
|
||||
def _netbox_update_chassis_for_blade(self, server, datacenter):
|
||||
|
@ -235,7 +263,7 @@ class ServerBase():
|
|||
# Set slot for blade
|
||||
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
|
||||
|
||||
|
@ -246,11 +274,12 @@ class ServerBase():
|
|||
* new network infos
|
||||
"""
|
||||
logging.debug('Updating Server...')
|
||||
|
||||
server = nb.dcim.devices.get(serial=self.get_service_tag())
|
||||
if not server:
|
||||
raise Exception("The server (Serial: {}) isn't yet registered in Netbox, register"
|
||||
'it before updating it'.format(self.get_service_tag()))
|
||||
update = False
|
||||
update = 0
|
||||
if self.is_blade():
|
||||
datacenter = self.get_netbox_datacenter()
|
||||
# if it's already linked to a chassis
|
||||
|
@ -269,14 +298,21 @@ class ServerBase():
|
|||
# for every other specs
|
||||
# check hostname
|
||||
if server.name != self.get_hostname():
|
||||
update = True
|
||||
update += 1
|
||||
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
|
||||
self.network = Network(server=self)
|
||||
self.network.update_netbox_network_cards()
|
||||
if config.update_all or config.update_network:
|
||||
self.network = Network(server=self)
|
||||
self.network.update_netbox_network_cards()
|
||||
# update inventory
|
||||
self.inventory = Inventory(server=self)
|
||||
self.inventory.update()
|
||||
if config.update_all or config.update_inventory:
|
||||
self.inventory = Inventory(server=self)
|
||||
self.inventory.update()
|
||||
if update:
|
||||
server.save()
|
||||
logging.debug('Finished updating Server!')
|
||||
|
|
Loading…
Add table
Reference in a new issue