Description
Use our Docker setup to test and report on reading data from the 'root' or 'top level' object(s) on a node
- Check SDNC direct support of '/' or empty string when reading data
- Check Stack (NCMP-DMI-SDNC) support of '/' or empty string when reading data
- If required (and possible in SDN-C) execute mini PoC i.e. modify NCMP/DMI to support it
A/C
- Report findings on Wiki Page
- Add reference to PoC code (e..g draft commits) if applicable
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Investigation result
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Currently to identify the resource on node ncmp uses resourceIdentifier in path as query parameter.
e.g.
Above url is used by client towards ncmp to fetch myresource from node named PNFDemo.
In this investigation it is found that ncmp and dmi both support resourceIdentifier= and resourceIdentifier=/ (<empty string> and 'slash')
but when this request hit sdnc , sdnc returns an exception as given below
15:18:29.472 [http-nio-8080-exec-5] ERROR o.o.c.n.d.e.DmiExceptionHandler - Exception occurred org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Internal Server Error: [<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>Error 500 Internal Server Error</title> </head> <body><h2>HTTP ERROR 500</h2> <p>Problem accessing /rests/data/network-topology:network-topology/topology=topology-netconf/node=PNFDemo/yang-ext:mount/. Reason: <pre> Internal Server Error</pre></p> </body> </html>
So it is the limitation of SDNC that it cant return root data. But ncmp and dmi propagate the resourceIdentifier as empty string (i.e. root) or slash to the controller.
===================================================================================================
This investigation is done directly on sdnc.
But when i use sdnc with restconf url
it returns correct result. Depth query is working but fields query is ignored (or i used it wrongly) with above url.
/rests and /restconf both packages are part of Open day light. /rests package is advance and supports actions, however /restconf is old package.
Summary of above investigation
- Sdnc supports two package for restconf. /rests and /restconf
- /rests is not able to pull root data using url http://localhost:8282/rests/data/network-topology:network-topology/topology=topology-netconf/node=PNFDemo/yang-ext:mount and returns 500 internal server error
- /restconf returns root data using url http://localhost:8282/restconf/config/network-topology:network-topology/topology/topology-netconf/node/PNFDemo/yang-ext:mount . Also supports depth but not fields.
- dmi-plugin uses /rests package to interact with sdnc so currently it is not able to fetch root data using resourceIdentifier as <empty string> or '/'.
To make it work:
- Use /restconf package in dmi-plugin when resourceIdentifier is <empty string> or '/'. For other request keep using /rests.
- And file a bug in ODL for /rests package that it is not fetching root data (preferably raise it in sdnc forum first).
Oscar comments:
1. Need to prioritize the fix in dmi-plugin to make root picked from restconf.
2. Fix in ODL takes time and then integrate that ODL fixed version in SDNC could spill things out.
Attachments
Issue Links
- relates to
-
NETCONF-828 Loading...