<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:14:08 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-83] Mounted store edit-config operations fail when creating list entries</title>
                <link>https://jira.opendaylight.org/browse/NETCONF-83</link>
                <project id="10142" key="NETCONF">netconf</project>
                    <description>&lt;p&gt;Netconf mounted data store operations fail when creating list entries using the new API, with the &quot;create missing parent&quot; set to True.&lt;br/&gt;
The code attempts to create also the list entry key leaf name, which is used as the IID, but the create parent subroutine does not pass the mandatory data for the list entry. This gets rejected by Confd.&lt;br/&gt;
Following example is for the ietf interfaces module, where the type field is mandatory.&lt;/p&gt;

&lt;p&gt;Data being put is:&lt;/p&gt;

&lt;p&gt;Interface [_description=parent-interface, _key=InterfaceKey &lt;span class=&quot;error&quot;&gt;&amp;#91;_name=GigabitEthernet0/8/0&amp;#93;&lt;/span&gt;, _name=GigabitEthernet0/8/0, _type=class org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.EthernetCsmacd, augmentation=[Interface1 [_ipv4=Ipv4 [_enabled=true, _forwarding=true, augmentation=[]], _ipv6=Ipv6 [_enabled=true, _forwarding=true, augmentation=[]]]]]&lt;/p&gt;

&lt;p&gt;Log:&lt;/p&gt;

&lt;p&gt;2015-10-08 14:33:34,839 | TRACE | oupCloseable-7-2 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | Finished sending request &amp;lt;rpc message-id=&quot;m-5&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;/&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;/p&gt;

&lt;p&gt;2015-10-08 14:33:34,844 | DEBUG | oupCloseable-7-2 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice&lt;/p&gt;
{vfn1}: Message received &amp;lt;rpc-reply xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot; message-id=&quot;m-5&quot;&amp;gt;&lt;br/&gt;
&amp;lt;ok/&amp;gt;&lt;br/&gt;
&amp;lt;/rpc-reply&amp;gt;&lt;br/&gt;
&lt;br/&gt;
2015-10-08 14:33:34,844 | TRACE | oupCloseable-7-2 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice{vfn1}
&lt;p&gt;: Matched request: &amp;lt;rpc message-id=&quot;m-5&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;/&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;br/&gt;
 to response: &amp;lt;rpc-reply xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot; message-id=&quot;m-5&quot;&amp;gt;&lt;br/&gt;
&amp;lt;ok/&amp;gt;&lt;br/&gt;
&amp;lt;/rpc-reply&amp;gt;&lt;/p&gt;

&lt;p&gt;2015-10-08 14:33:34,844 | TRACE | oupCloseable-7-2 | KeepaliveSalFacade               | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice&lt;/p&gt;
{vfn1}: Resetting netconf keepalive timer&lt;br/&gt;
2015-10-08 14:33:34,844 | TRACE | oupCloseable-7-2 | KeepaliveSalFacade               | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice{vfn1}
&lt;p&gt;: Scheduling next keepalive in 120 SECONDS&lt;br/&gt;
2015-10-08 14:33:34,844 | TRACE | oupCloseable-7-2 | NetconfRpcFutureCallback         | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice&lt;/p&gt;
{vfn1}: Edit candidate invoked successfully&lt;br/&gt;
2015-10-08 14:33:34,853 | TRACE | lt-dispatcher-17 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice{vfn1}
&lt;p&gt;: Sending message &amp;lt;rpc message-id=&quot;m-6&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;/&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;/p&gt;

&lt;p&gt;2015-10-08 14:33:34,854 | TRACE | oupCloseable-7-2 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | Finished sending request &amp;lt;rpc message-id=&quot;m-6&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;/&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;/p&gt;

&lt;p&gt;2015-10-08 14:33:34,859 | DEBUG | oupCloseable-7-2 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice&lt;/p&gt;
{vfn1}: Message received &amp;lt;rpc-reply xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot; message-id=&quot;m-6&quot;&amp;gt;&lt;br/&gt;
&amp;lt;ok/&amp;gt;&lt;br/&gt;
&amp;lt;/rpc-reply&amp;gt;&lt;br/&gt;
&lt;br/&gt;
2015-10-08 14:33:34,859 | TRACE | oupCloseable-7-2 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice{vfn1}
&lt;p&gt;: Matched request: &amp;lt;rpc message-id=&quot;m-6&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;/&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;br/&gt;
 to response: &amp;lt;rpc-reply xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot; message-id=&quot;m-6&quot;&amp;gt;&lt;br/&gt;
&amp;lt;ok/&amp;gt;&lt;br/&gt;
&amp;lt;/rpc-reply&amp;gt;&lt;/p&gt;

&lt;p&gt;2015-10-08 14:33:34,860 | TRACE | oupCloseable-7-2 | KeepaliveSalFacade               | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice&lt;/p&gt;
{vfn1}: Resetting netconf keepalive timer&lt;br/&gt;
2015-10-08 14:33:34,860 | TRACE | oupCloseable-7-2 | KeepaliveSalFacade               | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice{vfn1}
&lt;p&gt;: Scheduling next keepalive in 120 SECONDS&lt;br/&gt;
2015-10-08 14:33:34,860 | TRACE | oupCloseable-7-2 | NetconfRpcFutureCallback         | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice&lt;/p&gt;
{vfn1}: Edit candidate invoked successfully&lt;br/&gt;
2015-10-08 14:33:34,869 | TRACE | lt-dispatcher-17 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice{vfn1}
&lt;p&gt;: Sending message &amp;lt;rpc message-id=&quot;m-7&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;&amp;gt;&lt;br/&gt;
&amp;lt;interface&amp;gt;&lt;br/&gt;
&amp;lt;name&amp;gt;GigabitEthernet0/8/0&amp;lt;/name&amp;gt;&lt;br/&gt;
&amp;lt;/interface&amp;gt;&lt;br/&gt;
&amp;lt;/interfaces&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;/p&gt;

&lt;p&gt;2015-10-08 14:33:34,871 | TRACE | oupCloseable-7-2 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | Finished sending request &amp;lt;rpc message-id=&quot;m-7&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;&amp;gt;&lt;br/&gt;
&amp;lt;interface&amp;gt;&lt;br/&gt;
&amp;lt;name&amp;gt;GigabitEthernet0/8/0&amp;lt;/name&amp;gt;&lt;br/&gt;
&amp;lt;/interface&amp;gt;&lt;br/&gt;
&amp;lt;/interfaces&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;/p&gt;

&lt;p&gt;2015-10-08 14:33:34,876 | DEBUG | oupCloseable-7-2 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice&lt;/p&gt;
{vfn1}: Message received &amp;lt;rpc-reply xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot; message-id=&quot;m-7&quot;&amp;gt;&lt;br/&gt;
&amp;lt;rpc-error&amp;gt;&lt;br/&gt;
&amp;lt;error-type&amp;gt;application&amp;lt;/error-type&amp;gt;&lt;br/&gt;
&amp;lt;error-tag&amp;gt;data-missing&amp;lt;/error-tag&amp;gt;&lt;br/&gt;
&amp;lt;error-severity&amp;gt;error&amp;lt;/error-severity&amp;gt;&lt;br/&gt;
&amp;lt;error-path xmlns:if=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;&amp;gt;&lt;br/&gt;
    /rpc/edit-config/config/if:interfaces/if:interface&lt;span class=&quot;error&quot;&gt;&amp;#91;if:name=&amp;#39;GigabitEthernet0/8/0&amp;#39;&amp;#93;&lt;/span&gt;/if:type&lt;br/&gt;
  &amp;lt;/error-path&amp;gt;&lt;br/&gt;
&amp;lt;error-message xml:lang=&quot;en&quot;&amp;gt;/interfaces/interface&lt;span class=&quot;error&quot;&gt;&amp;#91;name=&amp;#39;GigabitEthernet0/8/0&amp;#39;&amp;#93;&lt;/span&gt;/type is not configured&amp;lt;/error-message&amp;gt;&lt;br/&gt;
&amp;lt;error-info&amp;gt;&lt;br/&gt;
&amp;lt;bad-element&amp;gt;type&amp;lt;/bad-element&amp;gt;&lt;br/&gt;
&amp;lt;/error-info&amp;gt;&lt;br/&gt;
&amp;lt;/rpc-error&amp;gt;&lt;br/&gt;
&amp;lt;/rpc-reply&amp;gt;&lt;br/&gt;
&lt;br/&gt;
2015-10-08 14:33:34,876 | TRACE | oupCloseable-7-2 | NetconfDeviceCommunicator        | 253 - org.opendaylight.controller.sal-netconf-connector - 1.2.0.Lithium-00001-SNAPSHOT | RemoteDevice{vfn1}
&lt;p&gt;: Matched request: &amp;lt;rpc message-id=&quot;m-7&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;&amp;gt;&lt;br/&gt;
&amp;lt;interface&amp;gt;&lt;br/&gt;
&amp;lt;name&amp;gt;GigabitEthernet0/8/0&amp;lt;/name&amp;gt;&lt;br/&gt;
&amp;lt;/interface&amp;gt;&lt;br/&gt;
&amp;lt;/interfaces&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;br/&gt;
 to response: &amp;lt;rpc-reply xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot; message-id=&quot;m-7&quot;&amp;gt;&lt;br/&gt;
&amp;lt;rpc-error&amp;gt;&lt;br/&gt;
&amp;lt;error-type&amp;gt;application&amp;lt;/error-type&amp;gt;&lt;br/&gt;
&amp;lt;error-tag&amp;gt;data-missing&amp;lt;/error-tag&amp;gt;&lt;br/&gt;
&amp;lt;error-severity&amp;gt;error&amp;lt;/error-severity&amp;gt;&lt;br/&gt;
&amp;lt;error-path xmlns:if=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;&amp;gt;&lt;br/&gt;
    /rpc/edit-config/config/if:interfaces/if:interface&lt;span class=&quot;error&quot;&gt;&amp;#91;if:name=&amp;#39;GigabitEthernet0/8/0&amp;#39;&amp;#93;&lt;/span&gt;/if:type&lt;br/&gt;
  &amp;lt;/error-path&amp;gt;&lt;br/&gt;
&amp;lt;error-message xml:lang=&quot;en&quot;&amp;gt;/interfaces/interface&lt;span class=&quot;error&quot;&gt;&amp;#91;name=&amp;#39;GigabitEthernet0/8/0&amp;#39;&amp;#93;&lt;/span&gt;/type is not configured&amp;lt;/error-message&amp;gt;&lt;br/&gt;
&amp;lt;error-info&amp;gt;&lt;br/&gt;
&amp;lt;bad-element&amp;gt;type&amp;lt;/bad-element&amp;gt;&lt;br/&gt;
&amp;lt;/error-info&amp;gt;&lt;br/&gt;
&amp;lt;/rpc-error&amp;gt;&lt;br/&gt;
&amp;lt;/rpc-reply&amp;gt;&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="21096">NETCONF-83</key>
            <summary>Mounted store edit-config operations fail when creating list entries</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <status id="10003" iconUrl="https://jira.opendaylight.org/images/icons/status_generic.gif" description="">Confirmed</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="wojdec">Wojciech Dec</reporter>
                        <labels>
                    </labels>
                <created>Fri, 9 Oct 2015 15:23:25 +0000</created>
                <updated>Tue, 13 Aug 2019 07:38:39 +0000</updated>
                                                                            <component>netconf</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="38986" author="mmarsale@cisco.com" created="Sat, 10 Oct 2015 13:02:30 +0000"  >&lt;p&gt;This is actually an MD-SAL Lithium issue, when binding aware transaction tries to create parent structure. The BindingDOMWriteTransactionAdapter.ensureParentsByMerge() is also trying to create parent data structure for the data itself (which should not be considered parents).&lt;/p&gt;

&lt;p&gt;So the method should probably perform following action:&lt;/p&gt;

&lt;p&gt;        normalizedPath = normalizedPath.getParent();&lt;/p&gt;

&lt;p&gt;Note: This has been fixed in Beryllium, where ensure parents is invoked at AbstractWriteTransaction.ensureParentsByMerge() and the method already contains the getParent() invocation.&lt;/p&gt;</comment>
                            <comment id="38987" author="mmarsale@cisco.com" created="Sat, 10 Oct 2015 13:08:04 +0000"  >&lt;p&gt;One addition:&lt;/p&gt;

&lt;p&gt;The &quot;normalizedPath = normalizedPath.getParent();&quot; action should be preceeded by a &quot;if(normalizedPath.getParent() == null) return;&quot; check. Because I think getParent may return a null.&lt;/p&gt;</comment>
                            <comment id="38988" author="wdec@cisco.com" created="Sat, 10 Oct 2015 17:41:18 +0000"  >&lt;p&gt;It does not appear that Lithium code has the getParent() method. Suggestions?&lt;/p&gt;</comment>
                            <comment id="38989" author="mmarsale@cisco.com" created="Sun, 11 Oct 2015 13:03:57 +0000"  >&lt;p&gt;Well, getParent() just creates new InstanceIdentifier instance with the same path without the last element:&lt;/p&gt;

&lt;p&gt;      YangInstanceIdentifier.create(this.path.subList(0, this.path.size() -  1));&lt;/p&gt;

&lt;p&gt;So doing the the same thing in BindingDOMWriteTransactionAdapter.ensureParentsByMerge() should do the trick.&lt;/p&gt;

&lt;p&gt;Its also possible to stop the loop before the last element is ensured as parent:&lt;/p&gt;

&lt;p&gt;        while (iterator.hasNext()) {&lt;br/&gt;
            PathArgument currentArg = iterator.next();&lt;br/&gt;
            // Skipping last element&lt;br/&gt;
            if(!iterator.hasNext()) &lt;/p&gt;
{
                break;
            }
&lt;p&gt;        ...&lt;/p&gt;</comment>
                            <comment id="38990" author="tony.tkacik@gmail.com" created="Tue, 3 Nov 2015 09:25:56 +0000"  >&lt;p&gt;Create missingParent=true will never work with mandatory nodes,&lt;br/&gt;
since MD-SAL does not have any information how to fill out missing parents,&lt;br/&gt;
originally we objected for having this flag and planned to require community to create this parents manually, but community decided it is useful to have this flags, even with limitations, that it may fail on mandatory nodes.&lt;/p&gt;</comment>
                            <comment id="38991" author="wdec@cisco.com" created="Tue, 3 Nov 2015 13:30:08 +0000"  >&lt;p&gt;It doesn&apos;t fail when writing against &lt;b&gt;the same&lt;/b&gt; model in local MD-SAL storage. It only fails when writing to the netconf mounted data store (a ConfD server).&lt;br/&gt;
Note that it could be a ConfD Netconf protocol bug (which I asked your comment on in the associated mail). The Netconf server returns a &quot;mandatory nodes missing&quot; after the first edit config, even before the commit/validate.&lt;/p&gt;</comment>
                            <comment id="38992" author="tony.tkacik@gmail.com" created="Wed, 4 Nov 2015 11:00:33 +0000"  >&lt;p&gt;Are we sure that puting of Interface [_description=parent-interface, _key=InterfaceKey &lt;span class=&quot;error&quot;&gt;&amp;#91;_name=GigabitEthernet0/8/0&amp;#93;&lt;/span&gt;, _name=GigabitEthernet0/8/0, _type=class org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.EthernetCsmacd, augmentation=[Interface1 [_ipv4=Ipv4 [_enabled=true, _forwarding=true, augmentation=[]], _ipv6=Ipv6 [_enabled=true, _forwarding=true, augmentation=[]]]]]&lt;/p&gt;

&lt;p&gt;failed?&lt;/p&gt;

&lt;p&gt;Or was there another nested write or put which was trying to first put something inside such interface and/or put interface with only key specified and later&lt;br/&gt;
write actual content?&lt;/p&gt;



&lt;p&gt;&amp;#8212;&lt;/p&gt;

&lt;p&gt;Lithium  MD-SAL datastore does not enforce mandatory statements (implementation behaviour, patch exists for Be)&lt;/p&gt;

&lt;p&gt;As I mentioned createMissingParents = true is bit flawed, that it can safely works only for parents which does not contain any mandatory nodes.&lt;/p&gt;

&lt;p&gt;So given that you are using concrete model - you have more knowledge about how that data should be filled out rather then MD-SAL (e.g. we can not infer values for mandatory nodes).&lt;/p&gt;

&lt;p&gt;&amp;gt; The Netconf server returns a &quot;mandatory nodes missing&quot; after the first edit  &lt;br/&gt;
&amp;gt; config, even before the commit/validate.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://tools.ietf.org/html/rfc6020#section-8.2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://tools.ietf.org/html/rfc6020#section-8.2&lt;/a&gt; section specifies which checks happens at which point - unfortunately it does not specify when mandatory checks are run. I would interpret this they should be done during validate or commit phase if target is candidate, but that is my interpretation and others may interpret it differently.&lt;/p&gt;</comment>
                            <comment id="38993" author="wdec@cisco.com" created="Wed, 4 Nov 2015 18:07:20 +0000"  >&lt;p&gt;Yes, the putting of that data failed, in a single transaction. If you look at the netconf trace, the first edit-config carries only the list-entry name, which is rejected by the netconf server (likely because of that config validation ambiguity in the spec), which meant that the second part of the config carrying the mandatory data never got transmitted&lt;br/&gt;
Using the same data and code, but against the local store, the sequence of operations is the same, however the first operation is accepted, and then the second delivers the mandatory data.&lt;/p&gt;

&lt;p&gt;Also note that in this case the mandatory leafs are not part of any of the node&apos;s parent nodes, i.e. they are only mandatory for the node being created.&lt;/p&gt;</comment>
                            <comment id="38994" author="mmarsale@cisco.com" created="Thu, 3 Dec 2015 08:28:44 +0000"  >&lt;p&gt;Hi Wojciech,&lt;/p&gt;

&lt;p&gt;Just a quick recap, there are 2 issues here:&lt;/p&gt;

&lt;p&gt;1. Creating parent structure with mandatory nodes is not possible because ensure parents does not provide them and should be avoided. (This would work against MD-SAL because it does&apos;t enforce mandatory yet) - But this is not your problem because you are creating only a simple parent structure and mandatory nodes are in the actual data you are submitting.&lt;/p&gt;

&lt;p&gt;2. Creating parent structure using BA (at least) in Lithium: BA tries to create the parent structure also for the data itself. - This is unnecessary since the data is already present in the request and in your case this causes issues due to mandatory nodes being present in that data.&lt;/p&gt;

&lt;p&gt;In your case the fix should be modifying ensure parents in the BA layer to not create parent structure for the data itself and strip the last item from InstanceIdentifier. I think you&apos;ve tried to use this workaround (suggested earlier), but I don&apos;t remember if you were successful. Could you provide the details here ?&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;</comment>
                            <comment id="38995" author="wdec@cisco.com" created="Tue, 16 Feb 2016 10:49:17 +0000"  >&lt;p&gt;The issue also appears when attempting to add configuration via RESTCONF. It actually renders the API unusable for config changes.&lt;/p&gt;

&lt;p&gt;API :&lt;br/&gt;
PUT /config/opendaylight-inventory:nodes/node/172.20.118.63/yang-ext:mount/ietf-interfaces:interfaces/interface/&lt;/p&gt;
{name}

&lt;p&gt;Input :&lt;br/&gt;
{&lt;br/&gt;
  &quot;interface&quot;: [&lt;/p&gt;
    {
      &quot;name&quot;: &quot;et4&quot;,
      &quot;type&quot;: &quot;ietf-interfaces-mm:layer1-if&quot;,
      &quot;ietf-interfaces-mm:source&quot;: &quot;et5&quot;,
      &quot;description&quot;: &quot;&quot;,
      &quot;enabled&quot;: false
    }
&lt;p&gt;  ]&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;Netconf data doesn&apos;t carry the mandatory parameters and fails:&lt;/p&gt;

&lt;p&gt;2016-02-13 04:03:24.861 GMT+00:00 &lt;span class=&quot;error&quot;&gt;&amp;#91;nettyThreadgroupModule$NioEventLoopGroupCloseable-7-3&amp;#93;&lt;/span&gt; TRACE o.o.c.s.c.n.u.NetconfRpcFutureCallback - RemoteDevice&lt;/p&gt;
{172.20.118.63}: Lock candidate invoked successfully&lt;br/&gt;
2016-02-13 04:03:24.861 GMT+00:00 &lt;span class=&quot;error&quot;&gt;&amp;#91;qtp11858990-41295&amp;#93;&lt;/span&gt; TRACE o.o.c.s.c.n.l.NetconfDeviceCommunicator - RemoteDevice{172.20.118.63}
&lt;p&gt;: Sending message &amp;lt;rpc message-id=&quot;m-17&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;/&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;/p&gt;

&lt;p&gt;2016-02-13 04:03:24.862 GMT+00:00 &lt;span class=&quot;error&quot;&gt;&amp;#91;nettyThreadgroupModule$NioEventLoopGroupCloseable-7-3&amp;#93;&lt;/span&gt; TRACE o.o.c.s.c.n.l.NetconfDeviceCommunicator - Finished sending request &amp;lt;rpc message-id=&quot;m-17&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;lt;target&amp;gt;&lt;br/&gt;
&amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;lt;config&amp;gt;&lt;br/&gt;
&amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;/&amp;gt;&lt;br/&gt;
&amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;/p&gt;

&lt;p&gt;2016-02-13 04:03:24.972 GMT+00:00 &lt;span class=&quot;error&quot;&gt;&amp;#91;nettyThreadgroupModule$NioEventLoopGroupCloseable-7-3&amp;#93;&lt;/span&gt; DEBUG o.o.c.s.c.n.l.NetconfDeviceCommunicator - RemoteDevice&lt;/p&gt;
{172.20.118.63}
&lt;p&gt;: Message received &amp;lt;rpc-reply xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot; message-id=&quot;m-17&quot;&amp;gt;&lt;br/&gt;
  &amp;lt;rpc-error&amp;gt;&lt;br/&gt;
    &amp;lt;error-type&amp;gt;application&amp;lt;/error-type&amp;gt;&lt;br/&gt;
    &amp;lt;error-tag&amp;gt;operation-failed&amp;lt;/error-tag&amp;gt;&lt;br/&gt;
    &amp;lt;error-severity&amp;gt;error&amp;lt;/error-severity&amp;gt;&lt;br/&gt;
    &amp;lt;error-message&amp;gt;Datastore fails to validate (Element config failed to validate content)&amp;lt;/error-message&amp;gt;&lt;br/&gt;
  &amp;lt;/rpc-error&amp;gt;&lt;br/&gt;
  &amp;lt;default:rpc-error xmlns:default=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
    &amp;lt;error-type&amp;gt;application&amp;lt;/error-type&amp;gt;&lt;br/&gt;
    &amp;lt;error-tag&amp;gt;operation-failed&amp;lt;/error-tag&amp;gt;&lt;br/&gt;
    &amp;lt;error-severity&amp;gt;error&amp;lt;/error-severity&amp;gt;&lt;br/&gt;
    &amp;lt;error-message&amp;gt;Datastore fails to validate (Extra element interfaces in interleave)&amp;lt;/error-message&amp;gt;&lt;br/&gt;
  &amp;lt;/default:rpc-error&amp;gt;&lt;br/&gt;
&amp;lt;/rpc-reply&amp;gt;&lt;/p&gt;</comment>
                            <comment id="38996" author="tony.tkacik@gmail.com" created="Tue, 16 Feb 2016 14:18:53 +0000"  >&lt;p&gt;@Wojciech: This is separate issue, could you open bug for it?&lt;/p&gt;

&lt;p&gt;(In reply to Wojciech Dec from comment #10)&lt;br/&gt;
&amp;gt; The issue also appears when attempting to add configuration via RESTCONF. It&lt;br/&gt;
&amp;gt; actually renders the API unusable for config changes.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; API :&lt;br/&gt;
&amp;gt; PUT&lt;br/&gt;
&amp;gt; /config/opendaylight-inventory:nodes/node/172.20.118.63/yang-ext:mount/ietf-&lt;br/&gt;
&amp;gt; interfaces:interfaces/interface/&lt;/p&gt;
{name}
&lt;p&gt;&amp;gt;  &lt;br/&gt;
&amp;gt; Input :&lt;br/&gt;
&amp;gt; {&lt;br/&gt;
&amp;gt;   &quot;interface&quot;: [&lt;br/&gt;
&amp;gt;     &lt;/p&gt;
{
&amp;gt;       &quot;name&quot;: &quot;et4&quot;,
&amp;gt;       &quot;type&quot;: &quot;ietf-interfaces-mm:layer1-if&quot;,
&amp;gt;       &quot;ietf-interfaces-mm:source&quot;: &quot;et5&quot;,
&amp;gt;       &quot;description&quot;: &quot;&quot;,
&amp;gt;       &quot;enabled&quot;: false
&amp;gt;     }
&lt;p&gt;&amp;gt;   ]&lt;br/&gt;
&amp;gt; }&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; Netconf data doesn&apos;t carry the mandatory parameters and fails:&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; 2016-02-13 04:03:24.861 GMT+00:00&lt;br/&gt;
&amp;gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;nettyThreadgroupModule$NioEventLoopGroupCloseable-7-3&amp;#93;&lt;/span&gt; TRACE&lt;br/&gt;
&amp;gt; o.o.c.s.c.n.u.NetconfRpcFutureCallback - RemoteDevice&lt;/p&gt;
{172.20.118.63}: Lock&lt;br/&gt;
&amp;gt; candidate invoked successfully&lt;br/&gt;
&amp;gt; 2016-02-13 04:03:24.861 GMT+00:00 &lt;span class=&quot;error&quot;&gt;&amp;#91;qtp11858990-41295&amp;#93;&lt;/span&gt; TRACE&lt;br/&gt;
&amp;gt; o.o.c.s.c.n.l.NetconfDeviceCommunicator - RemoteDevice{172.20.118.63}
&lt;p&gt;:&lt;br/&gt;
&amp;gt; Sending message &amp;lt;rpc message-id=&quot;m-17&quot;&lt;br/&gt;
&amp;gt; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;target&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;config&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;/&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;/rpc&amp;gt;&lt;br/&gt;
&amp;gt;  &lt;br/&gt;
&amp;gt; 2016-02-13 04:03:24.862 GMT+00:00&lt;br/&gt;
&amp;gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;nettyThreadgroupModule$NioEventLoopGroupCloseable-7-3&amp;#93;&lt;/span&gt; TRACE&lt;br/&gt;
&amp;gt; o.o.c.s.c.n.l.NetconfDeviceCommunicator - Finished sending request &amp;lt;rpc&lt;br/&gt;
&amp;gt; message-id=&quot;m-17&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;edit-config&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;target&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;candidate/&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;/target&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;config&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;interfaces xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-interfaces&quot;/&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;/config&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;/edit-config&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;/rpc&amp;gt;&lt;br/&gt;
&amp;gt;  &lt;br/&gt;
&amp;gt; 2016-02-13 04:03:24.972 GMT+00:00&lt;br/&gt;
&amp;gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;nettyThreadgroupModule$NioEventLoopGroupCloseable-7-3&amp;#93;&lt;/span&gt; DEBUG&lt;br/&gt;
&amp;gt; o.o.c.s.c.n.l.NetconfDeviceCommunicator - RemoteDevice&lt;/p&gt;
{172.20.118.63}
&lt;p&gt;:&lt;br/&gt;
&amp;gt; Message received &amp;lt;rpc-reply xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&lt;br/&gt;
&amp;gt; message-id=&quot;m-17&quot;&amp;gt;&lt;br/&gt;
&amp;gt;   &amp;lt;rpc-error&amp;gt;&lt;br/&gt;
&amp;gt;     &amp;lt;error-type&amp;gt;application&amp;lt;/error-type&amp;gt;&lt;br/&gt;
&amp;gt;     &amp;lt;error-tag&amp;gt;operation-failed&amp;lt;/error-tag&amp;gt;&lt;br/&gt;
&amp;gt;     &amp;lt;error-severity&amp;gt;error&amp;lt;/error-severity&amp;gt;&lt;br/&gt;
&amp;gt;     &amp;lt;error-message&amp;gt;Datastore fails to validate (Element config failed to&lt;br/&gt;
&amp;gt; validate content)&amp;lt;/error-message&amp;gt;&lt;br/&gt;
&amp;gt;   &amp;lt;/rpc-error&amp;gt;&lt;br/&gt;
&amp;gt;   &amp;lt;default:rpc-error xmlns:default=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;gt;     &amp;lt;error-type&amp;gt;application&amp;lt;/error-type&amp;gt;&lt;br/&gt;
&amp;gt;     &amp;lt;error-tag&amp;gt;operation-failed&amp;lt;/error-tag&amp;gt;&lt;br/&gt;
&amp;gt;     &amp;lt;error-severity&amp;gt;error&amp;lt;/error-severity&amp;gt;&lt;br/&gt;
&amp;gt;     &amp;lt;error-message&amp;gt;Datastore fails to validate (Extra element interfaces in&lt;br/&gt;
&amp;gt; interleave)&amp;lt;/error-message&amp;gt;&lt;br/&gt;
&amp;gt;   &amp;lt;/default:rpc-error&amp;gt;&lt;br/&gt;
&amp;gt; &amp;lt;/rpc-reply&amp;gt;&lt;/p&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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4449</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=4449]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i01wcn:</customfieldvalue>

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