Skip to content
Snippets Groups Projects
Commit e29f0841 authored by Bjarke Madsen's avatar Bjarke Madsen
Browse files

Temporarily fetch IPv6 info from separate endpoint

parent 2e6b2188
No related branches found
No related tags found
No related merge requests found
import requests
import logging
from functools import reduce
logger = logging.getLogger(__name__)
def get_interfaces(host):
def _get_ip_info(host): # pragma: no cover
def reduce_func(prev, curr):
interface_name = curr.get('name')
router_name = curr.get('router')
if interface_name and router_name:
router = prev.get(router_name, {})
interface = router.get(interface_name, {})
ipv4 = curr.get('ipv4', [])
ipv6 = curr.get('ipv6', [])
interface['ipv4'] = ipv4
interface['ipv6'] = ipv6
router[interface_name] = interface
prev[router_name] = router
return prev
r = requests.get(f'{host}/data/interfaces')
r.raise_for_status()
interfaces = r.json()
return reduce(reduce_func, interfaces, {})
def get_interfaces(host): # pragma: no cover
r = requests.get(f'{host}/poller/interfaces')
r.raise_for_status()
return r.json()
interfaces = r.json()
ip_info = _get_ip_info(host)
def enrich(interface):
router_name = interface.get('router')
router = ip_info.get(router_name)
if not router:
return interface
ip = router.get(interface['name'])
ipv4 = ip['ipv4']
ipv6 = ip['ipv6']
interface['ipv4'] = ipv4
interface['ipv6'] = ipv6
return interface
enriched = list(map(enrich, interfaces))
return enriched
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