Skip to content
Snippets Groups Projects

Feature/reporting 297 msr mdvpn endpoint

Merged Sam Roberts requested to merge feature/REPORTING-297-msr-mdvpn-endpoint into develop
2 unresolved threads
1 file
+ 45
0
Compare changes
  • Side-by-side
  • Inline
@@ -875,3 +875,48 @@ def bgp_all_peerings():
r = common.get_current_redis()
response = r.get('juniper-peerings:all')
return Response(response.decode('utf-8'), mimetype="application/json")
@routes.route('/mdvpn', methods=['GET', 'POST'])
@common.require_accepts_json
def mdvpn():
def _make_bgplu_index(bgplu):
index = {}
for peering in bgplu:
asn = peering['remote-asn']
if asn in index:
peering_list = index[asn]
peering_list.append(peering)
else:
index[asn] = [peering]
return index
def _bgplu_peerings(asn, bgplu_index):
peerings = []
if asn in bgplu_index:
for peering in bgplu_index[asn]:
formatted_peering = {
"name": peering['description'],
"v4": peering['address'],
"v6": '',
"hostname": peering['hostname']
}
peerings.append(formatted_peering)
return peerings
def _peerings_for_nren(asn, bgplu_index):
return {
"asn": asn,
"AP": _bgplu_peerings(asn, bgplu_index),
"VRR": []
}
r = common.get_current_redis()
bgplu = json.loads(r.get('juniper-peerings:group:BGPLU').decode('utf-8'))
bgplu_index = _make_bgplu_index(bgplu)
config = current_app.config['INVENTORY_PROVIDER_CONFIG']
nren_asn_map = config['nren-asn-map']
nren_details = [_peerings_for_nren(int(asn), bgplu_index) for asn in
nren_asn_map]
response = json.dumps(nren_details)
return Response(response, mimetype='application/json')
Loading