Version 33 (modified by sil, 12 years ago) (diff) |
---|
The Django Templating Language
CMT utilizes Django's Templating engine to process templates.
For a complete description of the Django templating engine, please read the documentation about the Django template language at the Django website.
CMT extra templatetags
For Cluster Management purposes, a few extra tags have been added. These extra tags can be used and loaded for your template with the tag:
{% load cmt_client %}
Without loading this, you cannot use any of the tags below.
Stringfilters
Stringfilters are functions that can pipe or translate a value into a different one. It's syntax is always through the use of a pipe:
- 'string'|<stringfilter>
- <variable>|<stringfilter>
arpanize
Converts an IP (range) to reversed DNS style ARPA notation
Usage
{{ <variable>|arpanize }}
Examples
{% assign broadcast = '192.168.1.0' %} {{ broastcast|arpanize }}
Example output
1.168.192.in-addr.arpa
base_net
Converts an IP (range) to it's first 3 octets
Usage
{{ <variable>|base_net }}
Examples
{% assign broadcast = '192.168.1.0' %} {{ broastcast|base_net }}
Example output
192.168.1
ip_last_digit
Converts an IP (range) to its last octet.
Usage
{{ <variable>|ip_last_digit }}
Examples
{% assign myip = '192.168.1.123' %} {{ myip|ip_last_digit }}
Example output
123
Functions
Functions are called with the following syntax:
{% <function> <arguments> %}
assign
Concatenates any combination of (space separated) variables and strings and assigns it to a new variable.
Usage
{% assign <varname> = <str|var> [[str|var] [str|var] [..]]
Examples
{% assign newvar = <space seperated list of strings/vars> %}
{% assign myabbreviation = 'bla' %}
{% assign file_name = '/var/tmp/rack-' rack.label '.txt' %}
{% assign elite = 'foo' host.label 'bar' %}
getbasenets
Get list of basenets in a network (name).
Usage
{% getbasenets <network name> as <listname> %}
Examples
Let's assume "MY ADMIN" network is: 192.168.10.0/23
{% getbasenets 'MY ADMIN' as network_basenets %} {% for bnet in network_basenets %} {{ bnet }} {% endfor %}
Example output
192.168.10 192.168.11
getracks
Get list of all racks in a cluster.
Usage
{% getracks <cluster> as <listname> %}
Examples
Let's assume the cluster with name "TINA" consists of 3 racks with the labels: r1, r5, r6
{% getracks 'TINA' as tina_racks %} {% for r in tina_racks %} {{ r.label }} {% endfor %}
Example output
r1 r5 r6
use
Compilation function to define Querysets for later use.
Usage
{% use <entity> with <attribute>=<value> as <variable> %}
Examples
{% use hardwareunit with 'cluster__name=Gina' as gina_hosts %}
{% use network with 'name__contains=gina' as gina_networks %}
{% use network with 'name=gina admin' as net_gina_admin %}
{% use interface with 'network__name=gina admin' as ifaces_gina_admin %}
Sections
Sections are used to indicate the tag will only affect the section contained therein. Sections always have a opening and closing tag and can contain arguments:
{% <section> [arguments] %} {% <endsection> %}
epilogue
Commands to be executed after (epi) the template processing is completed. This can be useful to restart a daemon for example, with a new configuration made by processing the template:
Section start
{% epilogue %}
Section end
{% endepilogue %}
Examples
{% epilogue %} /etc/init.d/named reload touch /var/run/named.pid {% endepilogue %}
noblanklines
Prevents any blanklines occurring in the resulting output (file).
Section start
{% noblanklines %}
Section end
{% endnoblanklines %}
Example's
{% noblanklines %} {{ host.label }} {{ host.rack }} {% endnoblanklines %}
store
Specifies where to store the resulting output (after template processing).
Section start
{% store <filename> %}
Where <filename> can be:
- variable
- 'Quoted string'
Section end
{% endstore %}
Examples
{% store '/path/to/file' %} {{ host.label }} {% endstore %}
{% store variable %} {{ host.label }} {% endstore %}