OpenDaylight (ODL) is an open source application development and delivery platform. YANG is a human-readable language for describing data device and service models. ODL dynamically generates REST APIs from YANG models (referred to as RESTCONF), thus providing ODL apps developers with an immediate baseline set of APIs. YANGMAN is an ODL application offering dynamically generated UI forms and native JSON representation based on RESTCONF APIs.
- Jan Medved
- Daniel Malachovsky
- Daniel Kuzma
- Stanislav Jamrich
- Chris Metz
- Andrej Vanko
- Alex Zverev
SDN, Opendaylight, Open Source, RESTCONF, YANG, RESTCONF
Project Kick-off Date:
In development. Initial beta version availble in June 2016. Final version incorporated into upcoming future ODL release.
Model-driven software engineering (MDSE) has emerged recently as a popular paradigm for automatically generating programming constructs such as code and APIs. This simplifies and facilitates more rapid and organized software engineering and development efforts. Naturally this leads to faster apps delivery.
Existing YANG tools for the programmer (e.g. sublime text, pyang, etc.) focus on model editing and validation. POSTMAN is the defacto standard for developers working with "known" REST APIs. In other words, the programmer must have in hand, a priori, the REST APIs their app will be dealing with. Not efficient.
Therefore what's needed is an MDSE app for ODL developers supporting:
- simplifed model validation and, RESTCONF API exposure, organization and access
- really simple WEB-based user interface for model "surfing"
YANGMAN is an application with a simple POSTMAN-inspired user interface. It will be available in a future release of ODL.
YANGMAN is an ODL-DLUX based application. It uses the standard ODL software components including MD-SAL and RESTCONF. Yangtools is an ODL component that reads/processes YANG models loaded into the ODL controller.
YANGMAN re-uses much of the same code present in the already-existing YANGUI. The primary difference is the simplifed POSTMAN-like GUI. This offers one app for model-surfing and RESTCONF API visibility and organization.
YANGMAN User Interface (GUI)
The YANGMAN GUI provides the operator with a web-based user interface into the system.The GUI is designed and implemented using AngularJS, a commonly used model-view-controller (MVC) UI framework. A simple look/feel is supported using the Angular Material. Internally the system defines models and services applied against those models; controllers for manipulating data for viewing; views (e.g. html page) displayed in a browser and bound to controllers. This MVC design pattern provides a modularized development environment and can be re-used across multiple applications. Of course it will be implemented inside of ODL DLUX.
Currently the YANGMAN is being coded up. What follows are some of the mockups that the development team will use to guide their efforts. Of course some differences will exist between the current mockups and the finished YANGMAN application. But the following gives you an idea on what it will look like.
Figure 2 shows the YANGMAN GUI model selection panel. !(https://raw.githubusercontent.com/CiscoDevNet/yangman/master/images/may2-YANGMAN-list-select-model copy.png) Figure 2. YANGMAN Model Selection
A scrollable list of the yang models is displayed after YANGMAN is lauched. The user selects the model and then the config or oper portion of the tree to work with.
On the left is a hide/unhide panel showing a generated pyang -tree type visualization of the selected YANG model user for reference purposes. The UI forms (auto-generated by YANGMAN) enable the developer to model surf and test out new RESTCONF APIs. When the send button is chosen the RESTCONF API with the respective body is conveyed into ODL. The JSON radio button on the upper righthand corner allows the user to toggle to the JSON display.
Users familiar with POSTMAN can relate to this panel. Indeed many developers are comfortable with the native JSON format of the API. Toggling between form and JSON is supported. A feature inherited from YANGUI allows the user to add/mod/del parameters that can be easily edited into the JSON display.
Figures 5 and 6 show the history and collections panels respectively, again inspired from users of POSTMAN.