XML and Junos OS Overview
Extensible Markup Language (XML) is a standard for representing and communicating information. It is a metalanguage for defining customized tags that are applied to a data set or document to describe the function of individual elements and codify the hierarchical relationships between them. Junos OS natively supports XML for the operation and configuration of devices running Junos OS.
The Junos OS command-line interface (CLI) and the Junos OS infrastructure communicate using XML. When you issue an operational mode command in the CLI, the CLI converts the command into XML format for processing. After processing, Junos OS returns the output in the form of an XML document, which the CLI converts back into a readable format for display. Remote client applications also use XML-based data encoding for operational and configuration requests on devices running Junos OS.
The Junos XML API is an XML representation of Junos OS configuration statements and operational mode commands. It defines an XML equivalent for all statements in the Junos OS configuration hierarchy and many of the commands that you issue in CLI operational mode. Each operational mode command with a Junos XML counterpart maps to a request tag element and, if necessary, a response tag element.
To display the configuration or operational mode command output as Junos XML tag elements instead of as the default formatted ASCII, issue the command, and pipe the output to the display xml command. Infrastructure tag elements in the response belong to the Junos XML management protocol. The tag elements that describe Junos OS configuration or operational data belong to the Junos XML API, which defines the Junos OS content that can be retrieved and manipulated by both the Junos XML management protocol and the NETCONF XML management protocol operations. The following example compares the text and XML output for the show chassis alarms operational mode command:
user@host> show chassis alarms
No alarms currently active
user@host> show chassis alarms | display xml
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/10.4R1/junos"> <alarm-information xmlns="http://xml.juniper.net/junos/10.4R1/junos-alarm"> <alarm-summary> <no-active-alarms/> </alarm-summary> </alarm-information> <cli> <banner></banner> </cli> </rpc-reply>
To display the Junos XML API representation of any operational mode command, issue the command, and pipe the output to the display xml rpc command. The following example shows the Junos XML API request tag for the show chassis alarms command.
user@host> show chassis alarms | display xml rpc
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/10.4R1/junos"> <rpc> <get-alarm-information> </get-alarm-information> </rpc> <cli> <banner></banner> </cli> </rpc-reply>
As shown in the previous example, the | display xml rpc option displays the Junos XML API request tag that is sent to Junos OS for processing whenever the command is issued. In contrast, the | display xml option displays the actual output of the processed command in XML format.
When you issue the show chassis alarms operational
mode command, the CLI converts the command into the Junos XML API
<get-alarm-information> request tag and sends the
XML request to the Junos OS infrastructure for processing. Junos OS
processes the request and returns the
<alarm-information> response tag element to the CLI. The CLI then converts the XML output
into the “No alarms currently active” message that is
displayed to the user.
Junos OS automation scripts use XML to communicate with the host device. Junos OS provides XML-formatted input to a script. The script processes the input source tree and then returns XML-formatted output to Junos OS. The script type determines the XML input document that is sent to the script as well as the output document that is returned to Junos OS for processing. Commit script input consists of an XML representation of the post-inheritance candidate configuration file. Event scripts receive an XML document containing the description of the triggering event. All script input documents contain information pertaining to the Junos OS environment, and some scripts receive additional script-specific input that depends on the script type.