wiki:Usage/TemplatingDocumentation

Version 31 (modified by ramonb, 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 visit the DJango website here:

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 }}

Example's:

  • {% 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 }}

Example's:

  • {% assign broadcast = '192.168.1.0' %}
    {{ broastcast|base_net }}
    

Example output:

  • 192.168.1

ip_last_digit

Converts an IP (range) to it's last octet

Usage:

  • {{ <variable>|ip_last_digit }}

Example's:

  • {% 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) variable's and strings and assigns it to a new variable.

Usage:

  • {% assign <varname> = <str|var> [[str|var] [str|var] [..]]

Example's:

  • {% 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> %}

Example's:

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> %}

Example's:

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> %}

Example's:

  • {% 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

Command's to be executed after (epi) the template processing is completed.

This can be useful to restart a daemon, for example.

Section start:

  • {% epilogue %}

Section end:

  • {% endepilogue %}

Example's:

  • {% 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> %}
  • <filename> can be:
    • variable
    • 'Quoted string'

Section end:

  • {% endstore %}

Example's:

  • {% store '/path/to/file' %}
    {{{ host.label }}}
    {% endstore %}
    
  • {% store variable %} 
    {{{ host.label }}}
    {% endstore %}