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

refresh ix public peers

parent 028ea7aa
No related branches found
No related tags found
No related merge requests found
......@@ -596,4 +596,11 @@ Any non-empty responses are JSON formatted messages.
TODO: verify these values
* `unknown`
* `up`
* `down`
\ No newline at end of file
* `down`
`ix_public_peer:<address>`
* key examples
* `ix_public_peer:193.203.0.203`
* `ix_public_peer:2001:07f8:00a0:0000:0000:5926:0000:0002`
* valid values:
......@@ -266,7 +266,7 @@ def ix_public_peers(netconf_config):
local_as = local_as.find('as-number')
peer_as = r.find('peer-as')
yield {
'name': ipaddress.ip_address(name.text),
'name': ipaddress.ip_address(name.text).exploded,
'description': description.text,
'as': {
'local': int(local_as.text),
......
......@@ -238,6 +238,23 @@ def clear_cached_classifier_responses(hostname):
r.delete(k)
def refresh_ix_public_peers(hostname, netconf):
task_logger = logging.getLogger(constants.TASK_LOGGER_NAME)
task_logger.debug(
'removing cached ix public peers for %r' % hostname)
r = get_redis(InventoryTask.config)
for k in r.keys('ix_public_peer:*'):
value = json.loads(r.get(k.decode('utf-8')).decode('utf-8'))
if value['router'] == hostname:
r.delete(k)
for peer in juniper.ix_public_peers(netconf):
peer['router'] = hostname
r.set(
'ix_public_peer:' + peer['name'],
json.dumps(peer))
@app.task
def reload_router_config(hostname):
task_logger = logging.getLogger(constants.TASK_LOGGER_NAME)
......@@ -249,6 +266,9 @@ def reload_router_config(hostname):
if not netconf_doc:
task_logger.error('no netconf data available for %r' % hostname)
else:
refresh_ix_public_peers(hostname, netconf_doc)
community = juniper.snmp_community_string(netconf_doc)
if not community:
task_logger.error(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment