OpenDaylight Controller:MD-SAL:MD-SAL Document Review:RESTCONF
- 1 WHAT IS IT
- 1.1 ADDITIONAL COMPONENTS
- 1.2 INTERFACES TO RESTCONF
- 1.3 ASSUMED KNOWLEDGE
- 1.4 ASSUMED ENVIRONMENT
- 1.5 WHY DO WE HAVE IT?
- 1.6 PAINPOINTS
- 1.7 HOW DOES IT WORK?
- 1.8 WHO SHOULD USE IT?
- 2 EDUCATION
- 3 EXAMPLES/TUTORIALS
- 4 Meetings/Action Items/Progress
WHAT IS IT
Restconf is protocol described in RFC RESTCONF Protocol. According to this document the protocol "provides a programmatic interface over HTTP for accessing data defined in YANG, using the datastores defined in NETCONF".
RFC describes several operation which is possible to execute via HTTP protocol and thus realize CRUD (create, retrive, update, delete) operation above datastore or just obtain some specific information.
INTERFACES TO RESTCONF
Restconf is accessible via HTTP operation POST, PUT, UPDATE, DELETE, OPTIONS. It is possible to execute GET operation directly from web browser. For additional operations it is necessary to install REST client to web browser or use application which is able to execute HTTP operation (e. g. CURL)
Users of the config subsystem should consider consulting following resources:
If some changes or new code should be added it is time saving advantage to have following knowledges:
- JAX-RS - according to javadoc "Java API for RESTful Web Services provides portable APIs for developing, exposing and accessing Web applications designed and implemented in compliance with principles of REST architectural style"
- Jersey - according to official site "framework for developing RESTful Web Services in Java that provides support for JAX-RS APIs"
- + the same as operators
//TODO Are any specific knowledges required for operator?
- + the same as endusers
- XML/JSON - input and output data are currently specified in these two formats.
- YANG - input data has to have specified correct namespace (XML) or module name (JSON). This information is specified in YANG files.
WHY DO WE HAVE IT?
It makes it possible to:
- manipulate with datastores,
- call RPCs
what exactly should be here
HOW DOES IT WORK?
// TODO what should be here?
HOW DOES IT FIT INTO THE CONTROLLER ARCHITECTURE?
WHO SHOULD USE IT?
WHICH PROJECTS DO/DON'T USE IT?
Resources for developers:
- Overview for programmers
- REST - wiki about REST
- JAX-RS - javadoc,
- Jersey - concrete implementation of JAX-RS which is used in controller,
- RESTCONF Protocol - restconf protocol (draft 2)
- Modeling JSON text with YANG
- YANG - A Data Modeling Language for NETCONF
ALTERNATIVES (INVESTIGATED OR POSSIBLE)