Versions Compared

Key

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

...

Sample YANG

(stores.yang with extension)

Statements and Description


Code Block
languageyml
titlestores model with extension
linenumberstrue
module sync-extension {
…
prefix sync-ext;
…
   extension sync-flag{
     description
           “This is a sample extension statement description“
      argument "value";
   }
….
}


The following model shows that it imported the model above where extensions is declared.

Code Block
languageyml
titleextended-stores model
linenumberstrue
module extended-stores {
    yang-version 1.1;
	...
    import sync-extension{
	    prefix sync-ext;
	}

    typedef year {
        type uint16 {
            range "1000..9999";
        }
    }

    container bookstore {
       sync-ext:sync-flag "on";
    ...
	}
}
  




extension Statement

see example from Lines 5-9 on stores model with extension

  • Syntax
Code Block
languagetext
extension <keyword/identifier>{
     <extension substatements...>
}


  • Usage

see example from Line 15 on extended-stores model

Code Block
languagetext
<module prefix>:<extension keyword> "argument";


  • to be used to define new statements
  • available to be imported and used by other modules just like a normal YANG statement
      • by use of 'import statement' to import the module where the extension is defined
  • statements that do not have any substatements can have extensions defined if wanted
  • its only one argument is the identifier and keyword for the extension
  • Optional substatements:
      • argument Statement
      • description Statement
      • reference Statement
      • defined extension Statements








argument Statement

see examples from Line 6 on stores model

  • takes a string argument which is the name of the argument to the keyword
  • Optional substatement
      • yin-element Statement




Code Block
languagexml
themeMidnight
titleYIN-extended-stores model
linenumberstrue
<?xml version="1.0" encoding="UTF-8"?>
<module name="extended-stores"
        xmlns="urn:ietf:params:xml:ns:yang:yin:1"
        xmlns:ext-book-store="org:onap:ccsdk:sampleExtended"
        xmlns:book-store="org:onap:ccsdk:sample">
  <namespace uri="org:onap:ccsdk:sampleExtended"/>
  <prefix value="ext-book-store"/>
  <revision date="2020-09-15">
    <description>
      <text>Sample Extended Model</text>
    </description>
  </revision>
  <import module="sync-extension">
    <prefix value="sync-ext"/>
  </import>
  <typedef name="year">
    <type name="uint16">
      <range value="1000..9999"/>
    </type>
  </typedef>
  <container name="bookstore">
    <sync-ext:sync-flag value="on"/>
    <leaf name="bookstore-name">
      <type name="string"/>
    </leaf>
	...
  </container>
</module>


yin-element Statement

  • takes a string argument which is true or false
  • yin-element is 'false' by default
  • if the argument is 'true' it indicates that the argument is mapped to an XML element in YIN or to an XML attribute


Notes

  1. Line 22 on YIN-extended-stores model
    1. result of using the argument without specifying the yin-element value
      1. yin-element is 'false'
      2. the argument 'value' is only an XML attribute
  2. if argument statement (Line 6 on stores model) contains yin-element substatement YIN-extend-stores model would result to the following:
    1. extension statement will produce a child node

      Code Block
      themeMidnight
      titleYIN-extended-stores model where yin-element is 'true'
      ...
        <container name="bookstore">
          <sync-ext:sync-flag>
            <sync-ext:value>on</sync-ext:value>
          </sync-ext:sync-flag>
      ...
        </container>
      ...

      ** this extension does not extend the data


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

...

  • The YANG language extension analysis above is only applicable for seeing that it is good for type informationconfiguration.
    • Extension The extension does not extend the actual data of the model instance
    • Based on the test scenarios above, extensions can only be seen on the schema sets and not on the data
  • YANG extension can be used at every level of the tree model
  • The test results show that the model is being recognized by the current YANG tools used to parse a model
    • It fails for scenarios such as parsing a model without an argument defined when it is expecting it
  • This analysis did not look further into the effect of setting yin-element to 'true' for the model instance
  • Further investigation is required to cover interpretation as the analysis above only covers parsing
    •  see
      Jira
      serverONAP Jira
      serverId425b2b0a-557c-3c0c-b515-579789cceedb
      keyCPS-866

...