This example shows you how to use a commit script to require T1 interfaces to be configured with internal clocking.
This commit script ensures that T1 interfaces are explicitly configured to use internal clocking. If the clocking statement is not included in the configuration, or if the clocking external statement is included, an error message is emitted and the configuration is not committed.
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:for-each select="interfaces/interface[starts-with(name, 't1-')]">
<xsl:variable name="clock-source">
<xsl:value-of select="clocking"/>
</xsl:variable>
<xsl:if test="not($clock-source = 'internal')">
<!- - or xsl:if test="$clock-source != 'internal'" - ->
<xnm:error>
<xsl:call-template name="jcs:edit-path"/>
<xsl:call-template name="jcs:statement">
<xsl:with-param name="dot" select="clocking"/>
</xsl:call-template>
<message>
This T1 interface should have internal clocking.
</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 {
for-each (interfaces/interface[starts-with(name, 't1-')]) {
var $clock-source = {
expr clocking;
}
if (not($clock-source = 'internal')) {
<xnm:error> {
call jcs:edit-path();
call jcs:statement($dot = clocking);
<message> "This T1 interface should have internal clocking.";
}
}
}
}
To test the example in this section, perform the following steps:
system {
scripts {
commit {
file ex-clocking-error.xsl;
}
}
}
interfaces {
t1-0/0/0 {
clocking external;
}
t1-0/0/1 {
unit 0;
}
}
- [edit]
- user@host# load merge terminal
- [Type ^D at a new line to end input]
- > Paste the contents of the clipboard here<
[edit]
user@host# commit
[edit interfaces interface t1-0/0/0]
'clocking external;'
This T1 interface should have internal clocking.
[edit interfaces interface t1-0/0/1]
';'
This T1 interface should have internal clocking.
error: 2 errors reported by commit scripts
error: commit script failure