CPS-735 Spike: Support for Yang Language Extension

CPS-735 Spike: Support for Yang Language Extension

Overview

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

References:

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

      • container nodes

      • list nodes 

      • leaf nodes

      • leaf-list nodes

Basic YANG statements

Sample YANG

(stores.yang)

Statements and Description

Sample YANG

(stores.yang)

Statements and Description

stores model
module stores { yang-version 1.1; namespace "org:onap:ccsdk:sample"; prefix book-store; revision "2020-09-15" { description "Sample Model"; } typedef year { type uint16 { range "1000..9999"; } } container bookstore { leaf bookstore-name { type string; } list categories { key "code"; leaf code { type string; } leaf name { type string; } list books { key title; leaf title { type string; } leaf-list authors { type string; } } } } }

module Statement

see example from Line 1

  • YANG language defines models with modules and submodules

  • Takes one argument (module name) which is the identifier

  • Groups all statements that belong to the module

  • This module example contains the following statements for header information:

             see examples from Lines 2-16

      • yang-version statement

      • namespace statement prefix statement

      • revision statements

 


typedef Statement

see example from Line 12

  • a statement that allows a new type to be defined based on a base type which is a YANG built-in type

 


container Statement

see example from Line 18

  • defines interior (container node) in the schema tree

  • only contains child nodes, has no value

      • child nodes can be a leaf, lists, containers and leaf-lists

 


leaf Statement

see example from Line 27

  • defines a leaf node in the schema tree

  • its only one argument is the identifier

  • has no child nodes, has one value of a particular type

  • 'type statement' is mandatory

  • See optional substatements available in (Section 7.6 https://www.hjp.at/doc/rfc/rfc6020.html#sec_1)

 


list Statement

see example from Line 35

  • defines an interior data node (list node) in the schema tree

  • its only one argument is the identifier

  • follows a block of substatements:

  • mandatory substatements:

      • 'key statement'


leaf-list Statement

see example from Line 41

  • array of leaf nodes

  • one value of a particular type per leaf

  • its only one argument is the identifier