Required Boilerplate for Commit Scripts
Define the boilerplate for commit scripts.
You can write Junos OS commit scripts in Extensible Stylesheet Language Transformations (XSLT), Stylesheet Language Alternative syntaX (SLAX), or Python. Commit scripts must include the necessary boilerplate required for that script language. Include boilerplate for both basic script functionality as well as any optional functionality used within the script such as the Junos OS extension functions and named templates. This topic provides standard boilerplate that you can use in XSLT, SLAX, and Python commit scripts.
XSLT Boilerplate for Commit Scripts
The XSLT commit script boilerplate is as follows:
1 <?xml version="1.0" standalone="yes"?> 2 <xsl:stylesheet version="1.0" 3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 4 xmlns:junos="http://xml.juniper.net/junos/*/junos" 5 xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" 6 xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> 7 <xsl:import href="../import/junos.xsl"/> 8 <xsl:template match="configuration"> <!-- ... insert your code here ... --> 9 </xsl:template> 10 </xsl:stylesheet>
Line 1 is the Extensible Markup Language (XML) processing instruction (PI). This PI specifies that the code is written in XML using version 1.0. The XML PI, if present, must be the first noncomment token in the script file.
1 <?xml version="1.0"?>
Line 2 opens the style sheet and specifies the XSLT version as 1.0.
2 <xsl:stylesheet version="1.0"
Lines 3 through 6 list all the namespace mappings commonly used in commit scripts. Not all of these prefixes are used in this example. Listing all namespace mappings prevents errors if you use the mappings in later versions of the script.
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 4 xmlns:junos="http://xml.juniper.net/junos/*/junos" 5 xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" 6 xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0">
Line 7 is an XSLT import statement. It loads the templates and variables from the ../import/junos.xsl file, which ships as part of the Junos OS. The junos.xsl file contains a set of named templates you can call in your scripts. For more information about the named templates, see Understanding Named Templates in Junos OS Automation Scripts.
7 <xsl:import href="../import/junos.xsl"/>
Line 8 defines a template that matches the <configuration>
element, which is the node selected by the <xsl:template
match="/"> template, contained in the junos.xsl
import file. The <xsl:template match="configuration"> element
allows you to exclude the /configuration/ root element from all
XPath expressions in the script and begin XPath expressions with the top Junos OS
hierarchy level. For more information, see XPath Overview.
8 <xsl:template match="configuration">
Add your code between Lines 8 and 9.
Line 9 closes the template.
9 </xsl:template>
Line 10 closes the style sheet and the commit script.
10 </xsl:stylesheet>
SLAX Boilerplate for Commit Scripts
The SLAX commit script boilerplate is as follows:
version 1.2;
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";
match configuration {
/*
* insert your code here
*/
}Python Boilerplate for Commit Scripts
Python commit scripts do not have a required boilerplate. However, Python commit scripts must import any objects that the script uses. Python commit scripts can import the following:
-
Junos_Contextdictionary—Contains information about the script execution environment. -
Junos_Configurationobject—Contains the post-inheritance candidate configuration. -
jcslibrary—Enables the script to use Junos OS extension functions and named templates in the script. -
jnpr.junosmodule and classes—Enable the script to use Junos PyEZ.
For example:
from junos import Junos_Context from junos import Junos_Configuration from jnpr.junos import Device import jcs if __name__ == '__main__':
Python automation scripts do not need to include an interpreter directive line
(#!/usr/bin/env python) at the start of the script. However,
the program still executes correctly if one is present.