aboutsummaryrefslogtreecommitdiffstats
path: root/templating/templating.py
diff options
context:
space:
mode:
Diffstat (limited to 'templating/templating.py')
-rwxr-xr-xtemplating/templating.py33
1 files changed, 30 insertions, 3 deletions
diff --git a/templating/templating.py b/templating/templating.py
index 9794655..fff5d42 100755
--- a/templating/templating.py
+++ b/templating/templating.py
@@ -3,14 +3,15 @@
import requests,traceback
from jinja2 import Template,Environment,FileSystemLoader,TemplateNotFound
import json
+import netaddr
import http.server
from enum import Enum
-endpoints = "read/oplog read/snmp read/switches-management public/config public/dhcp public/dhcp-summary public/ping public/switches public/switch-state".split()
+endpoints = "read/networks read/oplog read/snmp read/switches-management public/distro-tree public/config public/dhcp public/dhcp-summary public/ping public/switches public/switch-state".split()
objects = dict()
def getEndpoint(endpoint):
- r = requests.get("http://localhost:8080/api/%s" % endpoint)
+ r = requests.get("http://localhost:80/api/%s" % endpoint)
if (r.status_code != 200):
raise Exception("Bad status code for endpoint %s: %s" % (endpoint, r.status_code))
return r.json()
@@ -19,7 +20,33 @@ def updateData():
for a in endpoints:
objects[a] = getEndpoint(a)
-env = Environment(loader=FileSystemLoader(['templates/','/opt/gondul/data/templates', '/opt/gondul/web/templates']),lstrip_blocks=True, trim_blocks=True)
+def netmask(ip):
+ return netaddr.IPNetwork(ip).netmask
+def cidr(ip):
+ return netaddr.IPNetwork(ip).prefixlen
+def networkId(ip):
+ return netaddr.IPNetwork(ip).ip
+def getFirstDhcpIp(ip):
+ return netaddr.IPNetwork(ip)[3]
+def getLastDhcpIp(ip):
+ return netaddr.IPNetwork(ip)[-1]
+def getDistro(src):
+ return src.split(":")[0]
+def getPort(src):
+ return src.split(":")[1]
+def getFirstFapIp(ip):
+ return netaddr.IPNetwork(ip)[netaddr.IPNetwork(ip).size/2]
+
+env = Environment(loader=FileSystemLoader(['templates/','/opt/gondul/data/templates', '/opt/gondul/web/templates']), trim_blocks=True)
+
+env.filters["netmask"] = netmask
+env.filters["cidr"] = cidr
+env.filters["networkId"] = networkId
+env.filters["getFirstDhcpIp"] = getFirstDhcpIp
+env.filters["getLastDhcpIp"] = getLastDhcpIp
+env.filters["agentDistro"] = getDistro
+env.filters["agentPort"] = getPort
+env.filters["getFirstFapIP"] = getFirstFapIp
class Mode(Enum):
Get = 1