Details
Description
Error 500 is returned when executing yang-patch request that targets augmented element.
Tested on master and stable/magnesium branch with simulated netconf device.
Tested models look like this (full models in attachments):
container container-root {
...
container container-lvl1 {
...
}
}
augment /tm:container-root/tm:container-lvl1 {
container container-aug {
leaf leaf-aug {
type string;
}
...
}
}
YANG patch request:
{
"ietf-yang-patch:yang-patch": {
"patch-id": "test-patch",
"comment": "comment",
"edit": [
{
"edit-id": "edit1",
"operation": "replace",
"target": "/test-model:container-root/test-model:container-lvl1/test-model-aug:container-aug",
"value": {
"container-aug": {
"leaf-aug": "data"
}
}
}
]
}
}
Exception from logs on master branch (full logs in attachments):
14:27:21.286 WARN [qtp910831865-121] /rests/data/network-topology:network-topology/topology=topology-netconf/node=device/yang-ext:mount javax.servlet.ServletException: javax.servlet.ServletException: java.lang.IllegalArgumentException: Could not find schema for node (test-ns-aug)container-aug in container container-aug at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:90) ~[?:?] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[bundleFile:9.4.28.v20200408] at org.eclipse.jetty.server.Server.handle(Server.java:500) ~[bundleFile:9.4.28.v20200408] ... Caused by: javax.servlet.ServletException: java.lang.IllegalArgumentException: Could not find schema for node (test-ns-aug)container-aug in container container-aug at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:432) ~[?:?] at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370) ~[?:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389) ~[?:?] ... Caused by: java.lang.IllegalArgumentException: Could not find schema for node (test-ns-aug)container-aug in container container-aug at com.google.common.base.Preconditions.checkArgument(Preconditions.java:441) ~[?:?] at org.opendaylight.yangtools.yang.data.impl.codec.SchemaTracker.getSchema(SchemaTracker.java:153) ~[?:?] at org.opendaylight.yangtools.yang.data.impl.codec.SchemaTracker.startContainerNode(SchemaTracker.java:233) ~[?:?] ...
Targeting `leaf-aug` directly (one layer lower) works OK:
"target": "/test-model:container-root/test-model:container-lvl1/test-model-aug:container-aug/test-model-aug:leaf-aug",
"value": {
"leaf-aug": "data"
}
And targeting `container-lvl1` that's being augmented (one level higher) works too:
"target": "/test-model:container-root/test-model:container-lvl1",
"value": {
"container-lvl1": {
"container-aug": {
"leaf-aug": "data"
}
}
}
Attachments
Issue Links
- split to
-
NETCONF-911 JSON reader: Eliminate additional logic for augmented data
-
- Confirmed
-