1.5. Template e Tag

1.5.1. Template

Capita spesso di dover valorizzare i parametri dei comandi di entable con le stesse stringhe di testo.

Per non duplicare inutilmente la stessa stringa numerose volte in punti diversi e’ possibile utilizzare i template.

I template sono delle stringhe di testo di lunghezza arbitraria identificate da un nome logico.

E’ possibile definire un template e utilizzare il suo contenuto come valore di un parametro di un match o un target.

Per richiamare un template all’interno di un parametro bisogna usare la sintasssi:

#template:<nometemplate>

Esempio: Avendo definito il template messagge1 per usare il template in un parametro

entables -A DEFAULT -m attributes --attr-priority >10 -j SMTP --smtp_message '#template:message1'

Anche all’interno dei template possono essere usati gli stessi TAG utilizzabili nei parametri di match e target.

1.5.2. Tag

I tag sono delle wildcard per inserire dei valori particolari all’interno delle stringa di testo dei template o direttamente nei parametri dei target.

Tutti i tag disponibili sono raggruppati in moduli chiamati tagprovider.

Se all’interno di una stringa si vuole usare un particolare tag bisogna inserire un’istruzione secondo la seguente sintassi:

${tags['<tagprovider>:<nometag>']}

Esempio: Supponiamo di aver definito una stringa che usa diversi tag:

Allarme dal sito: ${tags['builtin:tenantname']}
L'elemento ${tags['builtin:type']} chiamato ${tags['builtin:nodename']} e' attualmente in stato ${tags['builtin:status']}

Questa stringa viene convertita/espansa cosi’:

site Sito
L'elemento node chiamato mason e' attualmente in stato DN

1.5.3. Tag di sistema (o builtin)

Per semplificare l’utilizzo dei tag, alcuni tag di sistema possono essere utilizzati con una sintassi abbreviata:

${tags['builtin:nodename']}    ->   ${nodename}

Esempio: la seguente stringa e’ equivalente a quella mostrata nel paragrafo precedente:

Allarme dal sito: ${tenantname}
L'elemento ${type} chiamato ${name} e' attualmente in stato ${status}

NOTA: Solo i tag forniti dai tagprovider standard di Sanet possono sfruttare questa versione abbreviata.

Eventuali tagprovider implementati esternamente dovranno essere utilizzati attraverso la sintassi “lunga”.

Per l’elenco dei tag builtin consultare l’elenco Tag disponibili.