...
We intend to provide a framework in which the applications only need to implement the business logic and seamlessly support any interface language like REST, NETCONF etc.
In ONOS, YANG is being used as a general purpose modeling language.
...
Model
YangCompiler
YangSerializer
YangRunTime
Model
Base Models will be used by different YANG components. It includes following:
DataNode
...
Provides a basis for holding information in a tree whose structure corresponds to a set of YANG models (base & augmentations).
...
- Inner node represents container and list.
- Leaf node represents leaf and leaf-list.
ResourceId
...
Resource identifier, Its list of node key to drive path till the resource, where key is contains the local node name and the corresponding module namespace.
- Is immutable.
- Provides a mechanism for mutation (Builder pattern, etc.)
- Used to operate on a given resource.
ModelObject
...
Provides a common basis for all POJOs which are generated from a YANG model.
- It is mutable.
The binding between ModelObject POJO and DataNode is performed by the YANG Runtime.
Each model or application will have a unique identifier, which can be configured using buck or maven as shown below :Code Block language bash title To config mode-ld using maven <configuration> <modelId>xml</modelId> </configuration>
Code Block language bash title To config model-Id using buck yang_model( app_name = 'example.application', model_id = 'example_id' )
In-case model-id is not configured then artifact-Id will be configured as model-Id for that particular application.
YANG Compiler
...
It encodes the internal in-memory representation of a configuration model to an external representation consumable from the resulting input stream.
Resource identifier in composite data will get encoded to resource identifier stream and data node will be encoded to resource data stream.
Facilities to convert Input stream to DataNode and vice versa.
...
4) YANG GUI enhancement for live compilation.
5) Sub-module support.