[CONTROLLER-1308] Netconf Operational info from netopeer gives ERROR Created: 13/May/15  Updated: 19/Oct/17  Resolved: 18/Jun/15

Status: Resolved
Project: controller
Component/s: netconf
Affects Version/s: Post-Helium
Fix Version/s: None

Type: Bug
Reporter: Luis Gomez Assignee: Maros Marsalek
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: PC


External issue ID: 3191

 Description   

Issue detected in the CI automation:

https://jenkins.opendaylight.org/controller/job/controller-csit-1node-cds-netconf-only-master/

To reproduce just follow the steps in this wiki to install netopeer:

https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:Netconf

There is 1 failure when fetching operational info from mounted device:

curl -v http://localhost:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/node/libnetconfd/yang-ext:mount/

Returns 500 Problem to get data from transaction.



 Comments   
Comment by Luis Gomez [ 13/May/15 ]

This is working in stable/helium with inventory URIs

Comment by Luis Gomez [ 13/May/15 ]

Karaf log is available in the jenkins link.

Comment by Maros Marsalek [ 18/May/15 ]

The problem is: unknown child node in the payload:

Unknown child(ren) node(s) detected, identified by: (http://netconfcentral.org/ns/toaster)toaster

This is correct behavior in ODL since netopeer did not provide yang schema for the toaster module:

2015-05-17 00:39:46,758 | WARN | oupCloseable-6-2 | NetconfDeviceCommunicator | 171 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.SNAPSHOT | RemoteDevice

{netopeer}

: Error reply from remote device, request: <rpc message-id="m-3" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-schema xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
<identifier>toaster</identifier>
<version>2009-11-20</version>
<format xmlns:x="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">x:yang</format>
</get-schema>
</rpc>
, response: <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-3">
<rpc-error>
<error-type>protocol</error-type>
<error-tag>invalid-value</error-tag>
<error-severity>error</error-severity>
<error-message>The requested schema does not exist.</error-message>
</rpc-error>
</rpc-reply>

... there are more schemas that could not be downloaded, not only toaster.

You should configure netopeer to provide all necessary yang models.

This works with helium, because helium did not contain proper data validation and used CompositeNodes. Currently, NormalizedNodes are in use and they do not allow unknown children(according to the schema) in the payload. This was essentially a bug with the old mount point APIs and the test relied on it.

Comment by Luis Gomez [ 18/May/15 ]

Hi Maros,

I can comment out the TC on Lithium but can you please update the netconf wiki with the things that currently work:

https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:Netconf

Thanks/Luis

Comment by Maros Marsalek [ 19/May/15 ]

Yeah, the netopeer related stuff should probably be updated so that the installed netopeer works fine with ODL ..

Comment by Maros Marsalek [ 02/Jun/15 ]

Quick update:

Its not missing schemas in netopper after all. Its a bug in netopeer's libnetconf lib. The library cannot parse prefixed values in xml properly e.g. yang leaves with identityref type.

Get-schema rpc contains an identityref leaf for input parameter format. ODL serializes identityrefs properly, but netopper cannot parse them and returns rpc-error for each attempt to download yang schemas.

This xml is ok with netopper:
<rpc message-id="m-2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-schema xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
<identifier>ietf-netconf</identifier>
<version>2011-03-08</version>
<format>yang</format>
</get-schema>
</rpc>

but this one is not:
<rpc message-id="m-2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-schema xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
<identifier>ietf-netconf</identifier>
<version>2011-03-08</version>
<format xmlns:x="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">x:yang</format>
</get-schema>
</rpc>

Both above xmls are correct, but netopper accepts only the simpler one.

What we can do: optimize identityref serialization so that the prefix is not included if not necessary (like in above case where the namespace of serialized identity is equal to namespace of parent tag). This will optimize serialized xml and also serve as a workaround for when connecting to Netopper netconf.

In addition, we need to report that bug for libnetconf library.

Comment by Maros Marsalek [ 02/Jun/15 ]

https://git.opendaylight.org/gerrit/#/c/21610/

Comment by Tony Tkacik [ 10/Jun/15 ]

Maros could you provide link to libnetconfd bug?

Comment by Maros Marsalek [ 10/Jun/15 ]

https://code.google.com/p/libnetconf/issues/detail?id=63

Generated at Wed Feb 07 19:55:12 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.