diff options
Diffstat (limited to 'templating/templating.py')
-rwxr-xr-x | templating/templating.py | 33 |
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 |