<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:16:39 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[NETCONF-1095] Fail to process PATCH with target containing a single forward slash</title>
                <link>https://jira.opendaylight.org/browse/NETCONF-1095</link>
                <project id="10142" key="NETCONF">netconf</project>
                    <description>&lt;p&gt;Controller fails to process a PATCH request where&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;target&lt;/tt&gt; is set to a single forward slash (&lt;tt&gt;/&lt;/tt&gt;)&lt;/li&gt;
	&lt;li&gt;Target data node resource of the URI is not a top-level node&lt;/li&gt;
	&lt;li&gt;Data is encoded in JSON&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For example, the following PATCH request to update the configuration of NETCONF topology node&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;PATCH /rests/data/network-topology:network-topology/topology=topology-netconf/node=ncserver
Accept: application/yang-data+json
Content-Type: application/yang-patch+json

{
    &quot;ietf-yang-patch:yang-patch&quot;: {
        &quot;edit&quot;: [
            {
                &quot;edit-id&quot;: &quot;1&quot;,
                &quot;operation&quot;: &quot;merge&quot;,
                &quot;target&quot;: &quot;/&quot;,
                &quot;value&quot;: {
                    &quot;network-topology:node&quot;: [
                        {
                            &quot;node-id&quot;: &quot;ncserver&quot;,
                            &quot;netconf-node-topology:keepalive-delay&quot;: 180
                        }
                    ]
                }
            }
        ],
        &quot;patch-id&quot;: &quot;1&quot;
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;triggers the following error:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;{
    &quot;errors&quot;: {
        &quot;error&quot;: [
            {
                &quot;error-tag&quot;: &quot;malformed-message&quot;,
                &quot;error-info&quot;: &quot;Schema for node with name node and namespace urn:TBD:params:xml:ns:yang:network-topology does not exist at EffectiveSchemaContext{modules=[ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-app-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert-mdsal}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert-rpc}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-encrypt-service-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-password-service-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=augment-iip-module}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=cluster-admin}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=distributed-datastore-provider}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-crypt-hash}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-ssh-encryption-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-ssh-key-exchange-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-ssh-mac-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-ssh-public-key-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-tls-cipher-suite-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-crypto-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-datastores}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-inet-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-keystore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-acm}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-monitoring}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-nmda}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-with-defaults}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-origin}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf-monitoring}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-ssh-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-ssh-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-ssh-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-truststore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-library}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-metadata}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-patch}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=instance-identifier-patch-module}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=nc-notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=netconf-keystore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=netconf-node-optional}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=netconf-node-topology}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=network-topology}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-controller-cds-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-device-notification}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-entity-owners}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-general-entity}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-netconf-device}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=sal-remote}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=sal-remote-augment}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=subscribe-to-notification}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=yang-ext}}]}&quot;,
                &quot;error-message&quot;: &quot;Error parsing json input: Schema for node with name node and namespace urn:TBD:params:xml:ns:yang:network-topology does not exist at EffectiveSchemaContext{modules=[ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-app-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert-mdsal}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert-rpc}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-encrypt-service-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-password-service-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=augment-iip-module}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=cluster-admin}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=distributed-datastore-provider}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-crypt-hash}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-ssh-encryption-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-ssh-key-exchange-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-ssh-mac-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-ssh-public-key-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-tls-cipher-suite-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-crypto-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-datastores}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-inet-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-keystore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-acm}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-monitoring}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-nmda}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-with-defaults}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-origin}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf-monitoring}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-ssh-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-ssh-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-ssh-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-truststore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-library}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-metadata}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-patch}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=instance-identifier-patch-module}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=nc-notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=netconf-keystore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=netconf-node-optional}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=netconf-node-topology}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=network-topology}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-controller-cds-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-device-notification}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-entity-owners}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-general-entity}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-netconf-device}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=sal-remote}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=sal-remote-augment}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=subscribe-to-notification}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=yang-ext}}]}&quot;,
                &quot;error-type&quot;: &quot;protocol&quot;
            }
        ]
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Equivalent PATCH request in XML works without any error:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;PATCH /rests/data/network-topology:network-topology/topology=topology-netconf/node=ncserver
Accept: application/yang-data+xml
Content-Type: application/yang-patch+xml

&amp;lt;yang-patch xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-yang-patch&quot;&amp;gt;
    &amp;lt;patch-id&amp;gt;patch-1&amp;lt;/patch-id&amp;gt;
    &amp;lt;edit&amp;gt;
        &amp;lt;edit-id&amp;gt;edit1&amp;lt;/edit-id&amp;gt;
        &amp;lt;operation&amp;gt;merge&amp;lt;/operation&amp;gt;
        &amp;lt;target&amp;gt;/&amp;lt;/target&amp;gt;
        &amp;lt;value&amp;gt;
            &amp;lt;node xmlns=&quot;urn:TBD:params:xml:ns:yang:network-topology&quot;&amp;gt;
                &amp;lt;node-id&amp;gt;ncserver&amp;lt;/node-id&amp;gt;
                &amp;lt;keepalive-delay xmlns=&quot;urn:opendaylight:netconf-node-topology&quot;&amp;gt;180&amp;lt;/keepalive-delay&amp;gt;
            &amp;lt;/node&amp;gt;
        &amp;lt;/value&amp;gt;
    &amp;lt;/edit&amp;gt;
&amp;lt;/yang-patch&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc8072#section-2.4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;RFC 8072 Section 2.4 Target Data Node&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;  If the target resource specified in the request URI identifies a&lt;br/&gt;
   datastore resource, then the path string in the &quot;target&quot; leaf is&lt;br/&gt;
   treated as an absolute path expression identifying the target data&lt;br/&gt;
   node for the corresponding edit.  The first node specified in the&lt;br/&gt;
   &quot;target&quot; leaf is a top-level data node defined within a YANG module.&lt;br/&gt;
   The &quot;target&quot; leaf MUST NOT contain a single forward slash (&quot;/&quot;),&lt;br/&gt;
   since this would identify the datastore resource, not a data&lt;br/&gt;
   resource.&lt;/p&gt;

&lt;p&gt;  If the target resource specified in the request URI identifies a&lt;br/&gt;
   configuration data resource, then the path string in the &quot;target&quot;&lt;br/&gt;
   leaf is treated as a relative path expression.  The first node&lt;br/&gt;
   specified in the &quot;target&quot; leaf is a child configuration data node of&lt;br/&gt;
   the data node associated with the target resource.  If the &quot;target&quot;&lt;br/&gt;
   leaf contains a single forward slash (&quot;/&quot;), then the target data node&lt;br/&gt;
   is the target resource data node.&lt;/p&gt;&lt;/blockquote&gt;</description>
                <environment></environment>
        <key id="37125">NETCONF-1095</key>
            <summary>Fail to process PATCH with target containing a single forward slash</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="sangwookha">Sangwook Ha</assignee>
                                    <reporter username="sangwookha">Sangwook Ha</reporter>
                        <labels>
                    </labels>
                <created>Wed, 19 Jul 2023 21:54:05 +0000</created>
                <updated>Wed, 30 Aug 2023 15:08:14 +0000</updated>
                            <resolved>Wed, 30 Aug 2023 15:08:14 +0000</resolved>
                                    <version>6.0.0</version>
                    <version>5.0.6</version>
                    <version>4.0.8</version>
                                    <fixVersion>7.0.0</fixVersion>
                    <fixVersion>5.0.8</fixVersion>
                    <fixVersion>6.0.2</fixVersion>
                                    <component>restconf-nb</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="72409" author="JIRAUSER13318" created="Thu, 20 Jul 2023 01:40:42 +0000"  >&lt;p&gt;Tests to reproduce this issue: &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/netconf/+/106937/1&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/netconf/+/106937/1&lt;/a&gt;&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;16:57:25 [ERROR] org.opendaylight.restconf.nb.rfc8040.jersey.providers.patch.JsonPatchBodyReaderTest.modulePatchTargetSecondLevelListWithFullPathURITest -- Time elapsed: 0.003 s &amp;lt;&amp;lt;&amp;lt; ERROR!
16:57:25 org.opendaylight.restconf.common.errors.RestconfDocumentedException: errors: [RestconfError [error-type: protocol, error-tag: malformed-message, error-message: Error parsing json input: Schema node with name my-list1 was not found under (urn:ietf:params:xml:ns:netconf:base:1.0)data., error-info: Schema node with name my-list1 was not found under (urn:ietf:params:xml:ns:netconf:base:1.0)data.]]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i045u7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>