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:
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.";
}
}
}
}
To test the output of an error message, make sure that the candidate configuration contains the condition that elicits the error. For this example, ensure that a T1 interface is configured but without the description statement.
To test the example in this chapter, perform the following steps:
user@host> edit
[edit]
user@host# set system scripts commit file description.xsl
[edit]
user@host# edit interfaces t1-0/0/1
[edit interfaces t1-0/0/1]
user@host# delete description
[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 output of an 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/7.4R1/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
2005-06-14 15:56:09 PDT: reading commit script configuration
2005-06-14 15:56:09 PDT: testing commit script configuration
2005-06-14 15:56:09 PDT: opening commit script '/var/db/scripts/commit/error.xsl'
2005-06-14 15:56:09 PDT: reading commit script 'error.xsl'
2005-06-14 15:56:09 PDT: running commit script 'error.xsl'
2005-06-14 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.
2005-06-14 15:56:09 PDT: 2 errors from script 'error.xsl'
error: 2 errors reported by commit scripts
error: commit script failure