Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

header-navigation
keyboard_arrow_up
close
keyboard_arrow_left
Automation Scripting User Guide
Table of Contents Expand all
list Table of Contents
file_download PDF
{ "lLangCode": "en", "lName": "English", "lCountryCode": "us", "transcode": "en_US" }
English
keyboard_arrow_right

Required Boilerplate for Commit Scripts

date_range 19-Nov-24

Define the boilerplate for commit scripts.

Junos OS commit scripts can be written 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 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 can be used in XSLT, SLAX, and Python commit scripts.

SLAX and XSLT commit scripts are based on Junos XML and Junos XML protocol tag elements. Like all XML elements, angle brackets enclose the name of a Junos XML or Junos XML protocol tag element in its opening and closing tags. This is an XML convention, and the brackets are a required part of the complete tag element name. They are not to be confused with the angle brackets used in the documentation to indicate optional parts of Junos OS CLI command strings.

XSLT Boilerplate for Commit Scripts

The XSLT commit script boilerplate is as follows:

content_copy zoom_out_map
 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.

content_copy zoom_out_map
 1    <?xml version="1.0"?>

Line 2 opens the style sheet and specifies the XSLT version as 1.0.

content_copy zoom_out_map
 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, but it is not an error to list namespace mappings that are not referenced. Listing all namespace mappings prevents errors if the mappings are used in later versions of the script.

content_copy zoom_out_map
 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 file referenced as ../import/junos.xsl, which ships as part of the Junos OS. The junos.xsl file contains a set of named templates you can call in your scripts. These named templates are discussed in Understanding Named Templates in Junos OS Automation Scripts.

content_copy zoom_out_map
 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.

content_copy zoom_out_map
 8        <xsl:template match="configuration">

Add your code between Lines 8 and 9.

Line 9 closes the template.

content_copy zoom_out_map
 9        </xsl:template>

Line 10 closes the style sheet and the commit script.

content_copy zoom_out_map
10    </xsl:stylesheet>

SLAX Boilerplate for Commit Scripts

The SLAX commit script boilerplate is as follows:

content_copy zoom_out_map
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, but they must import any objects that are used in the script. Python commit scripts can import the following:

  • Junos_Context dictionary—Contains information about the script execution environment.

  • Junos_Configuration object—Contains the post-inheritance candidate configuration.

  • jcs library—Enables the script to use Junos OS extension functions and Junos OS named template functionality in the script.

  • jnpr.junos module and classes—Enables the script to use Junos PyEZ.

For example:

content_copy zoom_out_map
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 will still execute correctly if one is present.

footer-navigation