Local inventory #16

Merged
Solvik merged 12 commits from feature/inventory into master 2019-08-26 16:54:49 +02:00
5 changed files with 20 additions and 10 deletions
Showing only changes of commit 397cc7a648 - Show all commits

View file

@ -65,6 +65,8 @@ rack_location:
# #
# driver: "file:/tmp/datacenter" # driver: "file:/tmp/datacenter"
# regex: "(.*)" # regex: "(.*)"
inventory: true
``` ```
# Hardware # Hardware

View file

@ -23,4 +23,6 @@ rack_location:
# regex: 'SysName:[ ]+[A-Za-z]+-[A-Za-z]+-([A-Za-z0-9]+)' # regex: 'SysName:[ ]+[A-Za-z]+-[A-Za-z]+-([A-Za-z0-9]+)'
# #
# driver: "file:/tmp/datacenter" # driver: "file:/tmp/datacenter"
# regex: "(.*)" # regex: "(.*)"
inventory: true

View file

@ -38,3 +38,5 @@ if config.get('network'):
NETWORK_IGNORE_INTERFACES = config['network'].get('ignore_interfaces') NETWORK_IGNORE_INTERFACES = config['network'].get('ignore_interfaces')
NETWORK_IGNORE_IPS = config['network'].get('ignore_ips') NETWORK_IGNORE_IPS = config['network'].get('ignore_ips')
NETWORK_LLDP = config['network'].get('lldp') is True NETWORK_LLDP = config['network'].get('lldp') is True
INVENTORY_ENABLED = config.get('inventory') == True

View file

@ -2,7 +2,7 @@ import logging
import subprocess import subprocess
import re import re
from netbox_agent.config import netbox_instance as nb from netbox_agent.config import netbox_instance as nb, INVENTORY_ENABLED
from netbox_agent.misc import is_tool from netbox_agent.misc import is_tool
from netbox_agent.raid.hp import HPRaid from netbox_agent.raid.hp import HPRaid
from netbox_agent.raid.storcli import StorcliRaid from netbox_agent.raid.storcli import StorcliRaid
@ -43,6 +43,10 @@ class Inventory():
* get netbox item * get netbox item
* create netbox item * create netbox item
* update netbox item * update netbox item
Known issues:
- no scan of non-raid devices
- no scan of NVMe devices
""" """
def __init__(self, server): def __init__(self, server):
@ -306,13 +310,19 @@ class Inventory():
self.create_netbox_memory(memory) self.create_netbox_memory(memory)
def create(self): def create(self):
if not INVENTORY_ENABLED:
return False
self.create_netbox_cpus() self.create_netbox_cpus()
self.create_netbox_memory() self.create_netbox_memory()
self.create_netbox_raid_cards() self.create_netbox_raid_cards()
self.create_netbox_disks() self.create_netbox_disks()
return True
def update(self): def update(self):
if not INVENTORY_ENABLED:
return False
self.update_netbox_cpus() self.update_netbox_cpus()
self.update_netbox_memory() self.update_netbox_memory()
self.update_netbox_raid_cards() self.update_netbox_raid_cards()
self.update_netbox_disks() self.update_netbox_disks()
return True

View file

@ -274,7 +274,7 @@ class ServerBase():
# check network cards # check network cards
self.network = Network(server=self) self.network = Network(server=self)
self.network.update_netbox_network_cards() self.network.update_netbox_network_cards()
# check raid_cards # update inventory
self.inventory = Inventory(server=self) self.inventory = Inventory(server=self)
self.inventory.update() self.inventory.update()
if update: if update:
@ -282,13 +282,7 @@ class ServerBase():
logging.debug('Finished updating Server!') logging.debug('Finished updating Server!')
def print_debug(self): def print_debug(self):
self.inventory = Inventory(server=self) self.network = Network(server=self)
# FIXME: do something more generic by looping on every get_* methods
# print(self.inventory.get_memory())
# print(self.inventory.get_raid_cards())
# print(self.inventory.get_netbox_raid_cards())
print(self.inventory.get_disks())
return
print('Datacenter:', self.get_datacenter()) print('Datacenter:', self.get_datacenter())
print('Netbox Datacenter:', self.get_netbox_datacenter()) print('Netbox Datacenter:', self.get_netbox_datacenter())
print('Rack:', self.get_rack()) print('Rack:', self.get_rack())