...
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.
...
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
...
4) YANG GUI enhancement for live compilation.
5) Sub-module support.