[Contents] [Prev] [Next] [Index] [Report an Error]

Requiring Internal Clocking on T1 Interfaces

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.";
            }
        }
    }
}

Testing ex-clocking-error.xsl

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

  1. From Requiring Internal Clocking on T1 Interfaces, copy the Extensible Stylesheet Language Transformations (XSLT) or SLAX script into a text file, and name the file ex-clocking-error.xsl. Copy the ex-clocking-error.xsl file to the /var/db/scripts/commit directory on your routing platform.
  2. Select the following configuration, and press Ctrl+c to copy it to the clipboard. If you are using the SLAX version of the script, change the filename to filename.slax.
    system {
        scripts {
            commit {
                file ex-clocking-error.xsl;
            }
        }
    }
    interfaces {
        t1-0/0/0 {
            clocking external;
        }
        t1-0/0/1 {
            unit 0;
        }
    }
  3. Merge the configuration into your routing platform configuration by issuing the load merge terminal configuration mode command:
    [edit]
    user@host# load merge terminal
    [Type ^D at a new line to end input]
    > Paste the contents of the clipboard here<
    1. At the prompt, paste the contents of the clipboard using the mouse and the paste icon.
    2. Press Enter.
    3. Press Ctrl+d.
  4. Issue the commit command. When you issue the commit command, the following output appears:
    [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

[Contents] [Prev] [Next] [Index] [Report an Error]