Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

The following study describes extending YANG language statements to allow customization of models.

YANG Language

  • The YANG language provides us the ability to define and model configurations and state data by defining YANG modules
    • Modules contain a sequence of statements
      • Statement syntax is either of the following :
        • statement = keyword [argument] ;
        • statement = keyword [argument] { <substatement(s)..> } ;

* argument can be zero or one depending on the statement

* argument is a string

  • An XML-based equivalent version of YANG is called YIN
  • YANG uses a tree to define the hierarchy of data wherein each ‘node’ has a value or/and a set of child nodes
    • 4 types of nodes
      • leaf nodes
      • container nodes
      • leaf-list nodes
      • list nodes



Figure 1.1 Schema tree of module 'stores'

stores module schema tree


YANG extension Statement

** the YIN version and Schema trees above are generated by YANG validator 'pyang'

Expected tree diagram for example-module based on RFC8340 (https://datatracker.ietf.org/doc/html/rfc8340):

Gliffy Diagram
macroIdc27dcf5f-85dc-4861-a7db-ff726ab42e91
displayNameDiagram 6
nameDiagram 6
pagePin2

Existing YANG parser

(Please see https://wiki.onap.org/display/DW/Existing+Yang+Parser)

OpenDayLight Yang tools recognises YANG extensions

  • Contains interface which has methods to access data of a YANG extension statement
    • package org.opendaylight.yangtools.yang.model.api;
      import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionEffectiveStatement;
      public interface ExtensionDefinition extends SchemaNode, EffectiveStatementEquivalent<ExtensionEffectiveStatement> {
      String getArgument();
      boolean isYinElement();
      }
      • Implementing Class
        • Class

References:

https://datatracker.ietf.org/doc/rfc8526/

https://www.rfc-editor.org/rfc/rfc6095.html

https://www.hjp.at/doc/rfc/rfc6020.html#sec_6.3.1

https://docs.opendaylight.org/en/latest/release-notes/upgrade-process.html?highlight=extension%20annotation#unrecognized-yang-statement-handling

https://datatracker.ietf.org/doc/html/rfc6110#section-9.4

https://datatracker.ietf.org/doc/html/rfc8791