Runtime YANG linter
In order to increase interoperability of YANG modules and related implementations, the IETF defined in RFC8407 Guidelines for Authors and Reviewers of Documents Containing YANG Data Models.
The guidelines are optional from YANG point of view, but developer experience shows that RFC8407 complaint YANG data modules decrease debug and integration test times.
Example: canonical order
If a the YANG statement "must" appears after a YANG statement "list" it may happen that the parser for a data tree first processes the "list" statement, runs into an issues, which will be later excluded by the YANG "must" statement.
Example: description
The YANG statement "description" is not needed for machines and algorithms, however it is very useful for development and debugging, avoiding that human users need to search for the right interpretation of the related YANG statements. In addition the description text can be shown in configuration user interfaces to guide the user.
Problem statement
Even all new developed and pubic available YANG data models are RFC8407 compliant, some existing YANG data models are not and may never be updated.
Proposed solution
A µService could read the standard YANG data models and modify them in run-time to provide the result for further code generation. The intent is to ensure or at least to increase the interoperability of different NetConf Server and NetConf Client implementations based in different NetConf frameworks and programming languages.
Interoperability requirements
NetConf Client programming language | |||||||
---|---|---|---|---|---|---|---|
C | C++ | GO | Java | Python | TypeScript | ||
NetConf Server programming language | C | X | X | X | X | X | X |
C++ | X | X | X | X | X | X | |
GO | X | X | X | X | X | X | |
Java | X | X | X | X | X | X | |
Python | X | X | X | X | X | X | |
Typescript |