-
Bug
-
Resolution: Unresolved
-
Medium
-
None
-
None
-
None
Stack trace -
2024-04-25T10:57:54,936 | TRACE | globalWorkerGroup-3-2 | NetconfDeviceCommunicator | 313 - org.opendaylight.netconf.client-mdsal - 6.0.6 | RemoteDeviceId[name=mw-01, address=/10.0.0.119:830]: Matched request: <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1"> <get-data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"> <datastore xmlns:x="urn:ietf:params:xml:ns:yang:ietf-datastores">x:operational</datastore> <xpath-filter>/control-construct/equipment[uuid="0a000077-0000-0000-0000-3c4cd0db3b20"]</xpath-filter> </get-data> </rpc> to response: <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1"> <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"> <control-construct xmlns="urn:onf:yang:core-model-1-4"> <equipment> <uuid>0a000077-0000-0000-0000-3c4cd0db3b20</uuid> <contained-holder> <local-id>268443714</local-id> <occupying-fru>10000042-0000-0000-0003-3c4cd0db3b20</occupying-fru> <holder-location>Slot_1-Port_2</holder-location> </contained-holder> <contained-holder> <local-id>268443715</local-id> <occupying-fru>10000043-0000-0000-0003-3c4cd0db3b20</occupying-fru> <holder-location>Slot_1-Port_3</holder-location> </contained-holder> <contained-holder> <local-id>268443719</local-id> <occupying-fru>10000047-0000-0000-0003-3c4cd0db3b20</occupying-fru> <holder-location>Slot_1-Port_7</holder-location> </contained-holder> <actual-equipment> <location> <equipment-location>EUROPE</equipment-location> <geographical-location>13.366869662518637:52.50132409269941</geographical-location> </location> <structure> <category xmlns:core-model="urn:onf:yang:core-model-1-4">core-model:EQUIPMENT_CATEGORY_STAND_ALONE_UNIT</category> </structure> <physical-properties> <temperature>57</temperature> </physical-properties> <manufactured-thing> <manufacturer-properties> <manufacturer-name>XYZ</manufacturer-name> </manufacturer-properties> <equipment-type> <model-identifier>1.3.6.1.4.1.989898989.1.20.2.2.10</model-identifier> <part-type-identifier>32-0002-0D</part-type-identifier> <type-name>ABC</type-name> </equipment-type> <equipment-instance> <serial-number>123456789</serial-number> </equipment-instance> </manufactured-thing> </actual-equipment> <name> <value-name>unit-name</value-name> <value>85ABCD96</value> </name> </equipment> </control-construct> </data> </rpc-reply> 2024-04-25T10:57:54,936 | INFO | globalWorkerGroup-3-2 | XmlParserStream | 367 - org.opendaylight.yangtools.yang-data-codec-xml - 11.0.5 | Root Element in read method - rpc-reply 2024-04-25T10:57:54,937 | INFO | globalWorkerGroup-3-2 | XmlParserStream | 367 - org.opendaylight.yangtools.yang-data-codec-xml - 11.0.5 | xmlElementName = data, parentSchemaName = output 2024-04-25T10:57:54,937 | INFO | globalWorkerGroup-3-2 | XmlParserStream | 367 - org.opendaylight.yangtools.yang-data-codec-xml - 11.0.5 | Root Element in read method - rpc-reply 2024-04-25T10:57:54,939 | INFO | opendaylight-cluster-data-notification-dispatcher-51 | ABCEquipmentReadDataFromNMDA | 213 - org.onap.ccsdk.features.sdnr.wt.potassium.sr2.sdnr-wt-devicemanager-vendor-ABC-provider - 1.7.0.SNAPSHOT | AnyData = DOMSourceAnydata{source=javax.xml.transform.dom.DOMSource@5c761532} 2024-04-25T10:57:54,939 | INFO | opendaylight-cluster-data-notification-dispatcher-51 | XmlParserStream | 367 - org.opendaylight.yangtools.yang-data-codec-xml - 11.0.5 | Root Element in read method - data 2024-04-25T10:57:54,939 | INFO | opendaylight-cluster-data-notification-dispatcher-51 | XmlParserStream | 367 - org.opendaylight.yangtools.yang-data-codec-xml - 11.0.5 | xmlElementName = control-construct, parentSchemaName = control-construct 2024-04-25T10:57:54,940 | ERROR | opendaylight-cluster-data-notification-dispatcher-51 | ABCDomEquipmentManager | 213 - org.onap.ccsdk.features.sdnr.wt.potassium.sr2.sdnr-wt-devicemanager-vendor-ABC-provider - 1.7.0.SNAPSHOT | AnydataNormalizationException - failed to retrieve equipment data {}org.opendaylight.yangtools.yang.data.api.schema.AnydataNormalizationException: Failed to normalize anydata at org.opendaylight.yangtools.yang.data.impl.schema.AbstractNormalizableAnydata.normalizeTo(AbstractNormalizableAnydata.java:36) ~[bundleFile:?] at org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.equipment.ABCDomEquipmentManager.readEquipmentInstance(ABCDomEquipmentManager.java:200) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.equipment.ABCDomEquipmentManager.setEquipmentData(ABCDomEquipmentManager.java:163) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.ABCDomNetworkElement.readEquipmentData(ABCDomNetworkElement.java:154) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.ABCDomNetworkElement.initialReadFromNetworkElement(ABCDomNetworkElement.java:88) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.ABCDomNetworkElement.register(ABCDomNetworkElement.java:108) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.DeviceManagerNetconfConnectHandler.handleNeStartup(DeviceManagerNetconfConnectHandler.java:190) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.DeviceManagerNetconfConnectHandler.onEnterConnected(DeviceManagerNetconfConnectHandler.java:96) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.impl.NetconfNodeStateServiceImpl.lambda$enterConnectedState$0(NetconfNodeStateServiceImpl.java:442) ~[?:?] at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.impl.NetconfNodeStateServiceImpl.enterConnectedState(NetconfNodeStateServiceImpl.java:440) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.impl.NetconfNodeStateServiceImpl.handleDataTreeChange(NetconfNodeStateServiceImpl.java:523) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.impl.NetconfNodeStateServiceImpl.onDataTreeChangedHandler(NetconfNodeStateServiceImpl.java:588) ~[?:?] at org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.impl.NetconfNodeStateServiceImpl$L1.onDataTreeChanged(NetconfNodeStateServiceImpl.java:610) ~[?:?] at org.opendaylight.mdsal.binding.dom.adapter.BindingDOMDataTreeChangeListenerAdapter.onDataTreeChanged(BindingDOMDataTreeChangeListenerAdapter.java:44) ~[bundleFile:?] at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataTreeChanged(DataTreeChangeListenerActor.java:90) ~[bundleFile:?] at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:45) ~[bundleFile:?] at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:24) [bundleFile:?] at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:20) [bundleFile:?] at scala.PartialFunction.applyOrElse(PartialFunction.scala:214) [bundleFile:?] at scala.PartialFunction.applyOrElse$(PartialFunction.scala:213) [bundleFile:?] at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:20) [bundleFile:?] at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:269) [bundleFile:?] at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:270) [bundleFile:?] at akka.actor.Actor.aroundReceive(Actor.scala:537) [bundleFile:?] at akka.actor.Actor.aroundReceive$(Actor.scala:535) [bundleFile:?] at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:220) [bundleFile:?] at akka.actor.ActorCell.receiveMessage(ActorCell.scala:579) [bundleFile:?] at akka.actor.ActorCell.invoke(ActorCell.scala:547) [bundleFile:?] at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270) [bundleFile:?] at akka.dispatch.Mailbox.run(Mailbox.scala:231) [bundleFile:?] at akka.dispatch.Mailbox.exec(Mailbox.scala:243) [bundleFile:?] at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) [?:?] at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) [?:?] at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) [?:?] at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) [?:?] at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) [?:?]Caused by: java.io.IOException: Failed to parse payload at org.opendaylight.yangtools.yang.data.codec.xml.DOMSourceAnydata.writeTo(DOMSourceAnydata.java:62) ~[bundleFile:?] at org.opendaylight.yangtools.yang.data.impl.schema.AbstractNormalizableAnydata.normalizeTo(AbstractNormalizableAnydata.java:34) ~[bundleFile:?] ... 36 moreCaused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[-1,-1]Message: Schema for node with name control-construct and namespace urn:onf:yang:core-model-1-4 does not exist in parent EmptyContainerEffectiveStatement{argument=(urn:onf:yang:core-model-1-4?revision=2019-11-27)control-construct} at org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:583) ~[bundleFile:?] at org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.parse(XmlParserStream.java:326) ~[bundleFile:?] at org.opendaylight.yangtools.yang.data.codec.xml.DOMSourceAnydata.writeTo(DOMSourceAnydata.java:60) ~[bundleFile:?] at org.opendaylight.yangtools.yang.data.impl.schema.AbstractNormalizableAnydata.normalizeTo(AbstractNormalizableAnydata.java:34) ~[bundleFile:?] ... 36 more
The above is the NETCONF request and response and the corresponding stack trace when normalizing the Anydata object.
This happens because the <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"> element is passed as part of the XML data for normalization instead of just the actual data which basically starts after the <data> element.
Couple of traces have been added in the XmlStreamParser to check what data is being sent to the XML parser and as can be seen from the output, the <data> element is sent as part of the XML which I believe should not be the case. I may be wrong here.
The piece of code which uses the NormalizedAnyData interfaces is as below -
Object anydata = eqptData.getDataRPCRequest("operational", "/control-construct/equipment[uuid=\"" + equipmentUuid + "\"]"); try { NormalizableAnydata nad = (NormalizableAnydata) anydata; NormalizedAnydata nzad = nad.normalizeTo(DefaultSchemaTreeInference.of(schemaContext, Absolute.of(ABCDevicemanagerQNames.CORE_MODEL_CONTROL_CONSTRUCT_CONTAINER))); ContainerNode cn = (ContainerNode) nzad.getData(); MapNode equipmentMap = (MapNode) cn.childByArg(new NodeIdentifier(ABCDevicemanagerQNames.CORE_MODEL_CC_EQPT)); Collection<MapEntryNode> equipmentEntryMap = equipmentMap.body(); return equipmentEntryMap; } catch (AnydataNormalizationException e) { log.error("AnydataNormalizationException - failed to retrieve equipment data {}", e); }
This piece of code was working in earlier versions of ODL (Tested with Sulphur SR1 and it is working fine but not the later versions).