Skip to content
Snippets Groups Projects
Commit d3d956cf authored by Erik Reid's avatar Erik Reid
Browse files

use snmp community from netconf

parent 6a8fe7a5
No related branches found
No related tags found
No related merge requests found
......@@ -215,6 +215,53 @@ def update_junosspace_device_list():
task_logger.debug('<<< update_junosspace_device_list')
def load_netconf_data(hostname):
"""
this method should only be called from a task
:param hostname:
:return:
"""
r = get_redis(InventoryTask.config)
netconf = r.get('netconf:' + hostname)
if not netconf:
return None
return etree.fromstring(netconf.decode('utf-8'))
def clear_cached_classifier_responses(hostname):
task_logger = logging.getLogger(constants.TASK_LOGGER_NAME)
task_logger.debug(
'removing cached classifier responses for %r' % hostname)
r = get_redis(InventoryTask.config)
for k in r.keys('classifier:cache:%s:*' % hostname):
r.delete(k)
@app.task()
def update_router_config(hostname):
task_logger = logging.getLogger(constants.TASK_LOGGER_NAME)
task_logger.debug('>>> update_router_config')
netconf_refresh_config.apply(hostname)
netconf_doc = load_netconf_data(hostname)
if not netconf_doc:
task_logger.error('no netconf data available for %r' % hostname)
else:
community = juniper.snmp_community_string(netconf_doc)
if not community:
task_logger.error(
'error extracting community string for %r' % hostname)
else:
snmp_refresh_interfaces.apply(hostname, community)
# TODO: move this out of else? (i.e. clear even if netconf fails?)
clear_cached_classifier_responses(hostname)
task_logger.debug('<<< update_router_config')
def _derive_router_hostnames(config):
r = get_redis(config)
junosspace_equipment = set()
......@@ -261,12 +308,6 @@ def start_refresh_cache_all(config):
for hostname in _derive_router_hostnames(config):
task_logger.debug(
'queueing router refresh jobs for %r' % hostname)
# TODO: !!!! extract community string from netconf data
task_logger.error(
'TODO: !!!! extract community string from netconf data')
subtasks.append(netconf_refresh_config.s(hostname))
# TODO: these should be synchronous, and then cleanup classifier cache
subtasks.append(snmp_refresh_interfaces.s(hostname, '0pBiFbD'))
subtasks.append(update_router_config.s(hostname))
return group(subtasks).apply_async()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment