Template e Tag ============== 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: 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. 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[':']} 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 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 :ref:`entables-defined-tags`.