from django.shortcuts import render
from backend.mongodb import db
from exfo.lib import Exfo
from pprint import pprint
from ttp import ttp
from django.http import JsonResponse
exfo = Exfo("administrator", "exf0w0rxC@t4dm!n")
exfo.login()
def index(request):
collection = db['mascot']
mascot_details = collection.find({})
rapi = exfo.list_api()
sla = exfo.call_api("sla")
data_to_parse = """
interface Loopback0
description Router-id-loopback
ip address 192.168.0.113/24
!
interface Vlan778
description CPE_Acces_Vlan
ip address 2002::fd37/124
ip vrf CPE1
!
"""
ttp_template = """
interface {{ interface }}
ip address {{ ip }}/{{ mask }}
description {{ description }}
ip vrf {{ vrf }}
"""
template = """
interface Loopback0
description Router-id-loopback
ip address 192.168.0.113/24
!
interface Loopback1
description Router-id-loopback
ip address 192.168.0.1/24
!
interface Vlan778
ip address 2002::fd37/124
ip vrf CPE1
!
interface Vlan779
ip address 2002::bbcd/124
ip vrf CPE2
!
interface {{ interface | contains("Loop") }}
ip address {{ ip }}/{{ mask }}
description {{ description }}
ip vrf {{ vrf }}
interface {{ interface | contains("Vlan") }}
ip address {{ ip }}/{{ mask }}
description {{ description }}
ip vrf {{ vrf }}
"""
parser = ttp(template=template)
parser.parse()
# form excel table and save in file
parser.result(
format="excel",
filename="excel_out_test_excel_formatter_update.xlsx",
returner="file",
update=True,
url="./Output/",
table=[
{
"headers": ["interface", "ip", "mask", "vrf", "description"],
"path": "loopbacks_new",
"key": "interface",
"tab_name": "loopbacks_new",
},
{"path": "vlans"},
],
)
# create parser object and parse data using template:
# parser = ttp(data=data_to_parse, template=ttp_template)
# parser.parse()
# # print result in JSON format
# results = parser.result(format='xlsx')[0]
# pprint(results)
return render(request, 'backend/index.html', {'objs': mascot_details, 'output': rapi.json(),\
'sla': sla.json()})
#Define Collection
def remote(request):
cmd = request.GET.get('cmd', None)
# exfo = Exfo("administrator", "exf0w0rxC@t4dm!n")
# exfo.login()
r = exfo.call_remote_api(cmd)
pprint(r.json())
# return JsonResponse(r.json())
return render(request, 'backend/remote_render.html', {'res': r})