From 397cc7a648ec05e2992b6fee059afa7273022e92 Mon Sep 17 00:00:00 2001 From: Solvik Blum Date: Thu, 22 Aug 2019 11:06:45 +0200 Subject: [PATCH] add inventory configuration variable to enable the feature --- README.md | 2 ++ netbox_agent.yaml.example | 4 +++- netbox_agent/config.py | 2 ++ netbox_agent/inventory.py | 12 +++++++++++- netbox_agent/server.py | 10 ++-------- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7c224db..5bca853 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ rack_location: # # driver: "file:/tmp/datacenter" # regex: "(.*)" + +inventory: true ``` # Hardware diff --git a/netbox_agent.yaml.example b/netbox_agent.yaml.example index f751dab..3a0481a 100644 --- a/netbox_agent.yaml.example +++ b/netbox_agent.yaml.example @@ -23,4 +23,6 @@ rack_location: # regex: 'SysName:[ ]+[A-Za-z]+-[A-Za-z]+-([A-Za-z0-9]+)' # # driver: "file:/tmp/datacenter" -# regex: "(.*)" \ No newline at end of file +# regex: "(.*)" + +inventory: true diff --git a/netbox_agent/config.py b/netbox_agent/config.py index 9b34c41..acb4d5a 100644 --- a/netbox_agent/config.py +++ b/netbox_agent/config.py @@ -38,3 +38,5 @@ if config.get('network'): NETWORK_IGNORE_INTERFACES = config['network'].get('ignore_interfaces') NETWORK_IGNORE_IPS = config['network'].get('ignore_ips') NETWORK_LLDP = config['network'].get('lldp') is True + +INVENTORY_ENABLED = config.get('inventory') == True diff --git a/netbox_agent/inventory.py b/netbox_agent/inventory.py index f4730fd..06aee92 100644 --- a/netbox_agent/inventory.py +++ b/netbox_agent/inventory.py @@ -2,7 +2,7 @@ import logging import subprocess 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.raid.hp import HPRaid from netbox_agent.raid.storcli import StorcliRaid @@ -43,6 +43,10 @@ class Inventory(): * get netbox item * create netbox item * update netbox item + + Known issues: + - no scan of non-raid devices + - no scan of NVMe devices """ def __init__(self, server): @@ -306,13 +310,19 @@ class Inventory(): self.create_netbox_memory(memory) def create(self): + if not INVENTORY_ENABLED: + return False self.create_netbox_cpus() self.create_netbox_memory() self.create_netbox_raid_cards() self.create_netbox_disks() + return True def update(self): + if not INVENTORY_ENABLED: + return False self.update_netbox_cpus() self.update_netbox_memory() self.update_netbox_raid_cards() self.update_netbox_disks() + return True diff --git a/netbox_agent/server.py b/netbox_agent/server.py index b85baf2..f57fa9e 100644 --- a/netbox_agent/server.py +++ b/netbox_agent/server.py @@ -274,7 +274,7 @@ class ServerBase(): # check network cards self.network = Network(server=self) self.network.update_netbox_network_cards() - # check raid_cards + # update inventory self.inventory = Inventory(server=self) self.inventory.update() if update: @@ -282,13 +282,7 @@ class ServerBase(): logging.debug('Finished updating Server!') def print_debug(self): - self.inventory = Inventory(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 + self.network = Network(server=self) print('Datacenter:', self.get_datacenter()) print('Netbox Datacenter:', self.get_netbox_datacenter()) print('Rack:', self.get_rack())