Основы автоматизации на SLAX: различия между версиями
(Новая страница: «=Fundamentals= - SLAX is based on XPath 1.0 and XSLT 1.0. - Переменные задаются только 1 раз и дальше уже нет возмо…») |
|||
Строка 33: | Строка 33: | ||
=SLAX Script File Structure= | =SLAX Script File Structure= | ||
Comments: - можно располагать хоть где в коде. | '''Comments:''' - можно располагать хоть где в коде. | ||
*(/*) - open-comment | *(/*) - open-comment | ||
*(*/) - close-comment | *(*/) - close-comment | ||
*'''At the top''': В скриптах в начале обязательно добавляется: | |||
version 1.0; | |||
ns junos = "http://xml.juniper.net/junos/*/junos"; | |||
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; | |||
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; | |||
Import "../import/junos.xsl"; | |||
после junos.xsl можно добавить любые свои файлы, написанные на SLAX, XSLT или их комбинации. | |||
*'''param''' - не изменяемые, нужно таким образом задать параметры командной строки. | |||
param $interface; | |||
param $mtu-size = 2000; | |||
можно задать переменную, например ''mtu-size'', и если юзер не будет указывать напрямую значение нужного параметра, то будет использоваться то значение, которое указано через ''param''. | |||
*'''$arguments''' - глобальная переменная, обеспечивает полезную информацию из CLI. | |||
*'''$event-definition''' - глобальная переменная для описания события. | |||
*'''main template''' - концептуальное начало скрипта. Шаблон, который матчит первый элемент из input XML document (source tree), даже если он пустой. | |||
Для op script - выглядит так: | |||
match / { | |||
<op-script-results> { | |||
/* your code goes here */ | |||
Для event script - выглядит так: | |||
match / { | |||
<event-script-results> { | |||
/* your code goes here */ | |||
Для commit script - выглядит так: | |||
match configuration { | |||
/* your code goes here */ |
Версия 20:54, 3 января 2017
Fundamentals
- SLAX is based on XPath 1.0 and XSLT 1.0.
- Переменные задаются только 1 раз и дальше уже нет возможности их изменить.
- The “Node-Set” variable data-type is from XPath. Используется оператор :=.
var $my-ns-var := { <interface> { <name> "ge-0/0/0"; } <interface> { <name> "ge-0/0/1";
- The “Result Tree Fragment” (RTF) может хранить в себе как строку, так и блок XML данных. Используется оператор =.
var $my-ns-var = { <interface> { <name> "ge-0/0/0"; } <interface> { <name> "ge-0/0/1";
- Шаблон по умолчанию вернет RTF, но с помощью использования := можео заставить его вернуть node-set.
- Context Processing. Насколько я поняла, можно использовать (.) как current context. Пример:
var $my-ns-var := { <interface> { <name> "ge-0/0/0"; <interface> { <name> "ge-0/0/1"; for-each( $my-ns-var/interface ) { var $ifd = .; /* $ifd is being assigned the 'current' interface node */ <output> $ifd/name;
SLAX Script File Structure
Comments: - можно располагать хоть где в коде.
- (/*) - open-comment
- (*/) - close-comment
- At the top: В скриптах в начале обязательно добавляется:
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; Import "../import/junos.xsl";
после junos.xsl можно добавить любые свои файлы, написанные на SLAX, XSLT или их комбинации.
- param - не изменяемые, нужно таким образом задать параметры командной строки.
param $interface; param $mtu-size = 2000;
можно задать переменную, например mtu-size, и если юзер не будет указывать напрямую значение нужного параметра, то будет использоваться то значение, которое указано через param.
- $arguments - глобальная переменная, обеспечивает полезную информацию из CLI.
- $event-definition - глобальная переменная для описания события.
- main template - концептуальное начало скрипта. Шаблон, который матчит первый элемент из input XML document (source tree), даже если он пустой.
Для op script - выглядит так:
match / { <op-script-results> { /* your code goes here */
Для event script - выглядит так:
match / { <event-script-results> { /* your code goes here */
Для commit script - выглядит так:
match configuration { /* your code goes here */