Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Navigation

Example: Generating a Custom Error Message

This example commit script generates a custom error message when a specific statement is not included in the device configuration, thereby halting the commit operation.

Requirements

This example uses a device running Junos OS.

Overview and Commit Script

Using a commit script, write a custom error message that appears when the description statement is not included at the [edit interfaces t1-fpc/pic/port] hierarchy level:

The script is shown in both XSLT and SLAX syntax.

XSLT Syntax

<?xml version="1.0" standalone="yes"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:junos="http://xml.juniper.net/junos/*/junos"
    xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm"
    xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0">
    <xsl:import href="../import/junos.xsl"/>
 
    <xsl:template match="configuration">
        <xsl:variable name="interface" select="interfaces/interface"/>
        <xsl:for-each select="$interface[starts-with(name, 't1-')]">
            <xsl:variable name="ifname" select="."/>
            <xsl:if test="not(description)">
                <xnm:error>
                    <xsl:call-template name="jcs:edit-path"/>
                    <xsl:call-template name="jcs:statement"/>
                    <message>Missing a description for this T1 interface.</message>
                </xnm:error>
            </xsl:if>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

SLAX Syntax

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";
 
match configuration {
    var $interface = interfaces/interface;
    for-each ($interface[starts-with(name, 't1-')]) {
        var $ifname = .;
        if (not(description)) {
            <xnm:error> {
                call jcs:edit-path();
                call jcs:statement();
                <message> "Missing a description for this T1 interface.";
            }
        }
    }
}

Configuration

Step-by-Step Procedure

Download, enable, and test the script: To test that a commit script generates an error message correctly, make sure that the candidate configuration contains the condition that elicits the error. For this example, ensure that the configuration for a T1 interface does not include the description statement.

To test the example in this topic, perform the following steps:

  1. Copy the XSLT or SLAX script into a text file, name the file description.xsl or description.slax as appropriate, and copy it to the /var/db/scripts/commit/ directory on the device.
  2. In configuration mode, include the file statement at the [edit system scripts commit] hierarchy level and description.xsl or description.slax as appropriate.

    [edit]user@host# set system scripts commit file description.xsl
  3. If the configuration for every T1 interface includes the description statement, issue the following configuration mode commands:

    [edit]user@host# edit interfaces t1-0/0/1[edit interfaces t1-0/0/1]user@host# delete description
  4. Issue the commit command to commit the configuration.

    user@host# commit

Verification

Verifying Script Execution

Purpose

Verify the error message generated by the commit script.

Action

Review the output of the commit command. The commit script generates an error message for each T1 interface that does not include a description statement. Any error causes the commit process to fail.

[edit]
user@host# commit
[edit interfaces interface t1-0/0/1]
    'description'
        Missing a description for this T1 interface.
[edit interfaces interface t1-0/0/2]
    'description'
        Missing a description for this T1 interface.
error: 2 errors reported by commit scripts
error: commit script failure

To display the XML-formatted version of the error message, issue the commit check | display xml command:

[edit interfaces t1-0/0/1]
user@host# commit check | display xml
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/10.0R1/junos">
    <commit-results>
        <routing-engine junos:style="normal">
            <name>re0</name>
            <xnm:error>
                <edit-path>
                    [edit interfaces interface t1-0/0/1]
                </edit-path>
                <statement>
                    description
                </statement>
                <message>
                    Missing a description for this T1 interface.
                </message>
            </xnm:error>
            <xnm:error>
                <edit-path>
                    [edit interfaces interface t1-0/0/2]
                </edit-path>
                <statement>
                    description
                </statement>
                <message>
                    Missing a description for this T1 interface.
                </message>
            </xnm:error>
            <xnm:error xmlns="http://xml.juniper.net/xnm/1.1/xnm"
                             xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm">
                <message>
                    2 errors reported by commit scripts
                </message>
            </xnm:error>
            <xnm:error xmlns="http://xml.juniper.net/xnm/1.1/xnm"
xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm">
                <message>
                    commit script failure
                </message>
            </xnm:error>
        </routing-engine>
    </commit-results>
    <cli>
        <banner>[edit interfaces]</banner>
    </cli>
</rpc-reply>

To display a detailed trace of commit script processing, issue the commit check | display detail command:

[edit interfaces t1-0/0/1]
user@host# commit check | display detail
2009-06-15 15:56:09 PDT: reading commit script configuration
2009-06-15 15:56:09 PDT: testing commit script configuration
2009-06-15 15:56:09 PDT: opening commit script '/var/db/scripts/commit/error.xsl'
2009-06-15 15:56:09 PDT: reading commit script 'error.xsl'
2009-06-15 15:56:09 PDT: running commit script 'error.xsl'
2009-06-15 15:56:09 PDT: processing commit script 'error.xsl'
[edit interfaces interface t1-0/0/1]
    'description'
        Missing a description for this T1 interface.
[edit interfaces interface t1-0/0/2]
    'description'
        Missing a description for this T1 interface.
2009-06-15 15:56:09 PDT: 2 errors from script 'error.xsl'
error: 2 errors reported by commit scripts
error: commit script failure

Published: 2012-11-05