Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Create Translation Scripts for YANG Configuration Models

You can load YANG modules on Junos devices to add data models that are not natively supported by the OS but can be supported by translation. When you extend the configuration hierarchy with nonnative YANG data models, you must also supply one or more translation scripts that provide the logic to map the nonnative configuration syntax to the corresponding Junos OS syntax.

Translation scripts perform two main functions:

  • Convert the configuration data corresponding to the nonnative YANG data models into Junos OS syntax

  • Add the translated configuration data as a transient change in the checkout configuration during the commit operation

Translation scripts can be written in either Python or SLAX and are similar to commit scripts in structure. For information about creating SLAX and Python scripts that generate transient changes in the configuration, see the Automation Scripting User Guide.

You use the request system yang add or request system yang update commands to add YANG modules and their associated translation scripts to a new or existing YANG package on the device. After you add the modules and translation scripts to the device, you can configure the statements and hierarchies in the data model added by those modules. When you load and commit the configuration data, the device calls the script to perform the translation and generate the transient configuration change.

This topic discusses the general structure for translation scripts. The specific translation logic required in the actual script depends on the custom hierarchies added to the schema and is beyond the scope of this topic.

To create the framework for translation scripts that are used on Junos devices:

  1. In your favorite editor, create a new file that uses the .slax or .py file extension, as appropriate.
  2. Include the necessary boilerplate required for that script’s language, which is identical to the boilerplate for commit scripts, and also include any required namespace declarations for your data models.
    • SLAX code:

    • Python code:

    Note:

    Translation scripts must fully qualify identifiers for nonnative YANG data models in the translation code.

    Note:

    For information about commit script boilerplate code, see Required Boilerplate for Commit Scripts and the Automation Scripting User Guide.

  3. Add code that maps the nonnative configuration data into the equivalent Junos OS syntax and stores the translated configuration data in a variable.
    • SLAX sample code:

    • Python sample code:

  4. Add the translated content to the checkout configuration as a transient configuration change by calling the jcs:emit-change() template in SLAX scripts or the jcs.emit_change() function in Python scripts with the translated configuration and transient-change tag as arguments.
    • SLAX sample code:

    • Python sample code:

    Note:

    In SLAX scripts, you can also generate the transient change by emitting the translated configuration inside of a <transient-change> element instead of calling the jcs:emit-change() template.

On the device, perform the following tasks before adding the translation script to a YANG package:

  1. If the translation script is written in Python, enable the device to execute unsigned Python scripts by configuring the language python or language python3 statement, as appropriate for the Junos OS release.

    Note:

    Starting in Junos OS Release 20.2R1 and Junos OS Evolved Release 22.3R1, the device uses Python 3 to execute YANG action and translation scripts. In earlier releases, Junos OS only uses Python 2.7 to execute these scripts, and Junos OS Evolved uses Python 2.7 by default to execute the scripts.

  2. Download the script to the device, and optionally validate the syntax.

Before you can use translation scripts on a device, you must add the scripts and associated modules to a new or existing YANG package by issuing the request system yang add or request system yang update command. After the modules and scripts are added, the translation scripts are automatically invoked when you commit configuration data in the corresponding data models.

When you configure statements that correspond to third-party YANG data models, for example, OpenConfig or custom YANG data models, the following features are not supported:

  • Using configure batch or configure private mode

  • Configuring statements under the [edit groups] hierarchy

The active and candidate configurations contain the configuration data for the nonnative YANG data models in the syntax defined by those models. However, because the translated configuration data is committed as a transient change, the active and candidate configurations do not explicitly display the translated data in the Junos OS syntax when you issue the show or show configuration commands. To apply YANG translation scripts when you view the configuration, use the | display translation-scripts filter.

To view the complete post-inheritance configuration with the translated data (transient changes) explicitly included, append the | display translation-scripts filter to the show configuration command in operational mode or the show command in configuration mode. To view just the nonnative configuration data after translation, use the | display translation-scripts translated-config filter.

In configuration mode, to display just the changes to the configuration data corresponding to nonnative YANG data models before or after translation scripts are applied, append the configured-delta or translated-delta keyword, respectively, to the show | display translation-scripts command. In both cases, the XML output displays the deleted configuration data, followed by the new configuration data.

For more information about the | display translation-scripts filter, see Commit and Display Configuration Data for Nonnative YANG Modules.

Release History Table
Release
Description
22.3R1
Starting in Junos OS Evolved Release 22.3R1, Junos OS Evolved uses Python 3 to execute YANG action and translation scripts.
20.2R1
Starting in Junos OS Release 20.2R1, Junos OS uses Python 3 to execute YANG action and translation scripts.