diff --git a/inventory_provider/router_details.py b/inventory_provider/router_details.py index 7eb2d24ec6995fbb8c6872762a120b5a9ce0d6ac..5c4ce7bc2cd1b0662249c45d8991a13d1943a6b5 100644 --- a/inventory_provider/router_details.py +++ b/inventory_provider/router_details.py @@ -19,12 +19,14 @@ def get_router_details(router): app.send_task( 'inventory_provider.tasks.worker.juniper_refresh_vrr', args=[router["hostname"]]) + task_logger.debug("launching task: " "inventory_provider" ".tasks.worker.juniper_refresh_interfaces") app.send_task( 'inventory_provider.tasks.worker.juniper_refresh_interfaces', args=[router["hostname"]]) + task_logger.debug("launching task: " "inventory_provider" ".tasks.worker.snmp_refresh_interfaces") @@ -32,6 +34,15 @@ def get_router_details(router): 'inventory_provider.tasks.worker.snmp_refresh_interfaces', args=[router["hostname"], router["community"]]) + task_logger.debug("launching task: " + "inventory_provider" + ".tasks.worker.netconf_refresh_config") + app.send_task( + 'inventory_provider.tasks.worker.netconf_refresh_config', + args=[router["hostname"]]) + + + def update_network_details(params): task_logger = logging.getLogger(TASK_LOGGER_NAME) diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index c1c9022a92d29fe1cd855ee0e9509ee72316c956..2ac02c3403786193ba42498b6ef5267a57d6a309 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -4,9 +4,11 @@ import logging from celery import bootsteps, Task import redis +from lxml import etree + from inventory_provider.tasks.app import app from inventory_provider import config -from inventory_provider import juniper, snmp +from inventory_provider import juniper, snmp, netconf from inventory_provider import constants logging.basicConfig(level=logging.WARNING) @@ -37,6 +39,20 @@ class InventoryTask(Task): "saved %s, key %s" % (hostname, key)) return "OK" + @staticmethod + def save_key_json(hostname, key, data): + InventoryTask.save_key( + hostname, + key, + json.dumps(data)) + + @staticmethod + def save_key_etree(hostname, key, data): + InventoryTask.save_key( + hostname, + key, + etree.tostring(data, encoding='utf-8')) + class WorkerArgs(bootsteps.Step): def __init__(self, worker, config_filename, **options): @@ -60,7 +76,7 @@ app.steps['worker'].add(WorkerArgs) @app.task(bind=InventoryTask) def juniper_refresh_bgp(self, hostname): - InventoryTask.save_key( + InventoryTask.save_key_json( hostname, "bgp", juniper.fetch_bgp_config(hostname, InventoryTask.config["ssh"])) @@ -68,7 +84,7 @@ def juniper_refresh_bgp(self, hostname): @app.task(bind=InventoryTask) def juniper_refresh_vrr(self, hostname): - InventoryTask.save_key( + InventoryTask.save_key_json( hostname, "vrr", juniper.fetch_vrr_config(hostname, InventoryTask.config["ssh"])) @@ -76,7 +92,7 @@ def juniper_refresh_vrr(self, hostname): @app.task(bind=InventoryTask) def juniper_refresh_interfaces(self, hostname): - InventoryTask.save_key( + InventoryTask.save_key_json( hostname, "interfaces", juniper.fetch_interfaces(hostname, InventoryTask.config["ssh"])) @@ -84,10 +100,19 @@ def juniper_refresh_interfaces(self, hostname): @app.task(bind=InventoryTask) def snmp_refresh_interfaces(self, hostname, community): - InventoryTask.save_key( + InventoryTask.save_key_json( hostname, "snmp-interfaces", list(snmp.get_router_interfaces( hostname, community, InventoryTask.config))) + + +@app.task(bind=InventoryTask) +def netconf_refresh_config(self, hostname): + InventoryTask.save_key( + hostname, + "netconf", + netconf.load_config_str(hostname, InventoryTask.config["ssh"])) +