diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/js/nms-info-box.js | 2 | ||||
-rw-r--r-- | web/templates/HOWTO.txt | 126 | ||||
-rw-r--r-- | web/templates/switch.txt | 19 | ||||
-rw-r--r-- | web/templates/switches.txt | 4 | ||||
-rw-r--r-- | web/templates/test.conf | 17 |
5 files changed, 1 insertions, 167 deletions
diff --git a/web/js/nms-info-box.js b/web/js/nms-info-box.js index 2e3eb06..4de8f3e 100644 --- a/web/js/nms-info-box.js +++ b/web/js/nms-info-box.js @@ -954,7 +954,7 @@ var switchLinks = function() { var topp = document.createElement("div") var urls = [ "http://gondul.tg23.gathering.org/api/templates/magic.conf/switch=" + sw, - "http://185.110.149.4/api/templates/magic.conf/switch=" + sw ]; + "http://185.110.148.105/api/templates/magic.conf/switch=" + sw ]; if (testTree(nmsData,['smanagement','switches',sw])) { var mg = nmsData["smanagement"]["switches"][sw]; urls.push("ssh://[" + mg.mgmt_v6_addr + "]"); diff --git a/web/templates/HOWTO.txt b/web/templates/HOWTO.txt deleted file mode 100644 index 641878e..0000000 --- a/web/templates/HOWTO.txt +++ /dev/null @@ -1,126 +0,0 @@ -How to use Gondul templating -============================ - -We utilize Jinja2 templates. - -{# - This is a jinja2 comment! --#} - -{% set url = "localhost" -%} -{% set example_switch = "r1.tele" -%} - -See http://jinja.pocoo.org/ for the full documentation of the templating -language. - -The rest of this document is about templating as it relates to Gondul - -Neat: This document is an actual template, so the examples are working -examples. The best place to view this HOWTO is in the Gondul GUI, where you -get a side-by-side comparison of the template and the rendered result. - -URLs -==== - -To read raw (unprocessed) templates, see http://{{ url }}/templates - -To see the rendered final result, see http://{{ url }}/api/templates - -Otherwise, use the Template-tab at http://{{ url }}/ - -Basics -====== - -Gondul provides templating through two different, but similar mechanisms. - -First, there are permanent templates, or server-side templates. These are -templates stored on the server and accessible by all Tech crew/equipment. - -These are fetched typically through a HTTP GET request. E.g.: - -http://{{ url }}/api/templates/switches.txt - -Secondly, you can write templates yourself and POST them to Gondul. This is -highly useful for one-off templates or template development. The syntax is -the same. - -Simply write a template-file and POST it with your favorite command-line -tool to: - -http://{{ url }}/api/templates/WHATEVER - -Example: - -POST http://{{ url }}nms/api/templates/foobar < my-local-template - -Available objects -================= - -Gondul templates have two dictionaries available for general use. The first -is "options". This is a simple list of GET parameters. If you access -http://{{ url }}/api/templates/HOWTO.txt?foo=bar, options[foo] will evaluate to -"bar" in that template. This can be accessed in the template as: - -Foo: {{ options["foo"] }} - -The second object is the "objects" ... dictionary. This is a list of all -the HTTP API end-points, in all their glory. The key is the URL. - -To use this, you need to review the relevant endpoint. This is best done by -reading the API documentation (or skimming through other templates). If you -want to acces e13-2's latency, for example, you can access -objects["public/ping"].switches["{{ example_switch }}"].latency4 - -As such: {{ objects["public/ping"].switches[example_switch].latency4 }} - -The logic is that "public/ping" is the url: http://{{ url }}/api/public/ping, it -contains JSON that begins with "switches", a list of all switches, each -switch as a "latency4" object (among other things) - -Other worth-while api-endpoints: - -- read/switch-management - Management information -- public/switches - All switches -- read/snmp - All SNMP data - -Filters -======= - -Jinja2 uses a number of filters to transform variables. They can be used to -do anything from upper-case all text to pretty-print JSON objects. They are -used by piping a variable. For example: options|pprint . This will "pretty -print" the options-object: - -{{ options|pprint }} - -See http://jinja.pocoo.org/docs/dev/templates/#builtin-filters for a list -of available filters. - -Loops -===== - -You can easily loop over objects, such as switches, using a for-loop. -Combine this with the "dictsort" filter to get a sorted list. - -{% for switch in objects["public/switches"].switches|dictsort %} - Switch {{ loop.index }} is {{ switch[0] }} or {{ switch[1] }} or full version: {{ switch }} -{% endfor %} - -To avoid having to worry about indices of tuples (e.g.: switch[0]), you can -also use a simpler style: - -{% for key, value in objects["public/ping"].switches|dictsort %} - Switch {{ loop.index }} is {{ key}} with latency4 of {{ value.latency4 }}ms -{% endfor %} - -Work flow -========= - -Recommended: - -1. Read some other template with relevant data. -2. Open the API endpoints in your browser to review the data structure -3. Use query-parameters to provide user-selection (e.g.: ?switch=foobar) -4. Write your template on your local machine, test frequently by POST'ing it -5. When done: Ask us and we'll upload it server-side - diff --git a/web/templates/switch.txt b/web/templates/switch.txt deleted file mode 100644 index 0fd9754..0000000 --- a/web/templates/switch.txt +++ /dev/null @@ -1,19 +0,0 @@ -{# - This can be used through GET /templating/switch.txt?switch=e41-2 - - It is provided as a simple demo of how to combine "GET parameters" with - templating. - - #} -{% set sw = options["switch"] %} -{% set s = objects["public/switches"].switches[sw] %} -{% if s %} -{% set mg = objects["read/switches-management"].switches[sw] %} - -Switch {{ sw }} has management ip {{ mg.mgmt_v4_addr }} - -It is assoicated with distro {{ s.distro_name }} -{% else %} -Switch not found -{% endif %} - diff --git a/web/templates/switches.txt b/web/templates/switches.txt deleted file mode 100644 index b710066..0000000 --- a/web/templates/switches.txt +++ /dev/null @@ -1,4 +0,0 @@ -{% for (switch, s) in objects["public/switches"].switches|dictsort %} - {% set mg = objects["read/switches-management"].switches[switch] -%} - {{ switch }} {{mg.subnet4 }} {{ mg.subnet6 }} {{ mg.mgmt_v4_addr }} {{ mg.mgmt_v6_addr }} {{ mg.traffic_vlan }} {{ s.distro_name }} -{% endfor %} diff --git a/web/templates/test.conf b/web/templates/test.conf deleted file mode 100644 index ce2fe0d..0000000 --- a/web/templates/test.conf +++ /dev/null @@ -1,17 +0,0 @@ -{# Fetches something simple from gondul #} -{# Query parameters: ?switch=e1-1 #} - -{# Check if ?switch option is given#} -{% if not options["switch"] %} - {# pretty print public/switches endpoint#} - {{ objects["public/switches"] | pprint }} -{% else %} - {# sets sw variable using the query parameter #} - {% set sw = options["switch"] %} -{% endif %} -{% if sw %} - {# find the correct switch from public/switches api endpoint using query paramter#} - {% set switch = objects["public/switches"].switches[sw] %} - {# pretty print info in api #} - {{ switch | tojson }} -{% endif %} |