Uploaded image for project: 'netconf'
  1. netconf
  2. NETCONF-1274

Redundant "/" sign in AbstractRestconfStreamRegistry#baseStreamLocation

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Medium Medium
    • 7.0.5
    • None
    • restconf-nb

      AbstractRestconfStreamRegistry#baseStreamLocation generates the wrong path with two slashes after `rests` for the device notification stream URL http://localhost:8181/rests//streams/json/urn:uuid:94392890-fb00-450c-a174-aef77f410990

      Steps to reproduce:
      1. run karaf and netopeer
      2. Connect netopeer to controller
      3. Setup Receiving Netconf Device Notifications on a http client

      After creating the http Stream for the events you can see this log on the DEBUG level:

      2024-03-15T17:23:17,784 | DEBUG | opendaylight-cluster-data-shard-dispatcher-33 | InMemoryDataTree                 | 312 - org.opendaylight.yangtools.yang-data-tree-ri - 13.0.1 | Updating datastore from MaterializedContainerNode{version=org.opendaylight.yangtools.yang.data.tree.impl.node.Version@4ab24d9d, subtreeVersion=org.opendaylight.yangtools.yang.data.tree.impl.node.Version@4b752996, children={(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)restconf-state=SimpleContainerNode{version=org.opendaylight.yangtools.yang.data.tree.impl.node.Version@4b752996, data=ImmutableContainerNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)restconf-state, body=[ImmutableContainerNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capabilities, body=[ImmutableSystemLeafSetNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability, body=UnmodifiableCollection{[ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:with-defaults:1.0], body=urn:ietf:params:restconf:capability:with-defaults:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:leaf-nodes-only:1.0], body=urn:opendaylight:params:restconf:capability:leaf-nodes-only:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:skip-notification-data:1.0], body=urn:opendaylight:params:restconf:capability:skip-notification-data:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:child-nodes-only:1.0], body=urn:opendaylight:params:restconf:capability:child-nodes-only:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:depth:1.0], body=urn:ietf:params:restconf:capability:depth:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:filter:1.0], body=urn:ietf:params:restconf:capability:filter:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:pretty-print:1.0], body=urn:opendaylight:params:restconf:capability:pretty-print:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:changed-leaf-nodes-only:1.0], body=urn:opendaylight:params:restconf:capability:changed-leaf-nodes-only:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:fields:1.0], body=urn:ietf:params:restconf:capability:fields:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:replay:1.0], body=urn:ietf:params:restconf:capability:replay:1.0}]}}]}]}}}} to MaterializedContainerNode{version=org.opendaylight.yangtools.yang.data.tree.impl.node.Version@4ab24d9d, subtreeVersion=org.opendaylight.yangtools.yang.data.tree.impl.node.Version@33e600b5, children={(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)restconf-state=LazyContainerNode{version=org.opendaylight.yangtools.yang.data.tree.impl.node.Version@4b752996, subtreeVersion=org.opendaylight.yangtools.yang.data.tree.impl.node.Version@33e600b5, children={(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)streams=SimpleContainerNode{version=org.opendaylight.yangtools.yang.data.tree.impl.node.Version@33e600b5, data=ImmutableContainerNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)streams, body=[ImmutableSystemMapNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)stream, body=[ImmutableMapEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)stream[{(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)name=urn:uuid:94392890-fb00-450c-a174-aef77f410990}], body=[ImmutableSystemMapNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)access, body=UnmodifiableCollection{[ImmutableMapEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)access[{(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)encoding=json}], body=[ImmutableLeafNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)encoding, body=json}, ImmutableLeafNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)location, body=http://localhost:8181/rests//streams/json/urn:uuid:94392890-fb00-450c-a174-aef77f410990}]}, ImmutableMapEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)access[{(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)encoding=xml}], body=[ImmutableLeafNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)encoding, body=xml}, ImmutableLeafNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)location, body=http://localhost:8181/rests//streams/xml/urn:uuid:94392890-fb00-450c-a174-aef77f410990}]}]}}, ImmutableLeafNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)name, body=urn:uuid:94392890-fb00-450c-a174-aef77f410990}, ImmutableLeafNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)description, body=All YANG notifications occuring on mount point /network-topology:network-topology/topology=topology-netconf/node=netopeer}]}]}]}}}, untouched=[ImmutableContainerNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capabilities, body=[ImmutableSystemLeafSetNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability, body=UnmodifiableCollection{[ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:with-defaults:1.0], body=urn:ietf:params:restconf:capability:with-defaults:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:leaf-nodes-only:1.0], body=urn:opendaylight:params:restconf:capability:leaf-nodes-only:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:skip-notification-data:1.0], body=urn:opendaylight:params:restconf:capability:skip-notification-data:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:child-nodes-only:1.0], body=urn:opendaylight:params:restconf:capability:child-nodes-only:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:depth:1.0], body=urn:ietf:params:restconf:capability:depth:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:filter:1.0], body=urn:ietf:params:restconf:capability:filter:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:pretty-print:1.0], body=urn:opendaylight:params:restconf:capability:pretty-print:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:opendaylight:params:restconf:capability:changed-leaf-nodes-only:1.0], body=urn:opendaylight:params:restconf:capability:changed-leaf-nodes-only:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:fields:1.0], body=urn:ietf:params:restconf:capability:fields:1.0}, ImmutableLeafSetEntryNode{name=(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)capability[urn:ietf:params:restconf:capability:replay:1.0], body=urn:ietf:params:restconf:capability:replay:1.0}]}}]}]}}}
      

            yaroslav.lastivka Yaroslav Lastivka
            yaroslav.lastivka Yaroslav Lastivka
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: