<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:09:52 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>[MDSAL-460] Define a replacement for LogicalDatastoreType</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-460</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;YANG models are giving us a relatively-usable model of datastores, each defined as an identity. As YANG cannot define an abstract identity, some of these are not valid as datastore identifiers, but otherwise the generated classes should be okay.&lt;/p&gt;

&lt;p&gt;Unfortunately this extensibility also means we can no longer maintain common.api.LogicalDatastoreType as a common enumeration shared by Binding and DOM.&lt;/p&gt;

&lt;p&gt;In DOM world, a datastore is identified by its identity &#8211; hence it is a QName wrapped in a dom.api-specific final class. Note this class:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;must be a value object, i.e. no externally-visible constructors&lt;/li&gt;
	&lt;li&gt;must be a WritableObject&lt;/li&gt;
	&lt;li&gt;must validate the QName against well-known abstract identities&lt;/li&gt;
	&lt;li&gt;must maintain a cache and/or an Interner&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;In Binding world, we can use generated classes directly and spell out that certain classes are invalid. binding.api implementations should consider enforcing this, although such checks should not be on critical paths.&lt;/p&gt;

&lt;p&gt;Migration of LogicalDatastoreType.OPERATIONAL is straightforward, as it means operational store in both worlds. Slight twist in this regard is that there may be users who use this datastore as &amp;lt;intended&amp;gt; &#8211; which is not an immediate problem, but applications need to be advised to consider whether they want to work in &amp;lt;intended&amp;gt; as well &#8211; once we have that datastore supported.&lt;/p&gt;

&lt;p&gt;Migration of LogicalDatastoreType.CONFIGURATION is less straightforward. In local (MD-SAL) context, this datastore corresponds to a fusion of the old &apos;config=true&apos; datastores. The datastore itself represents &amp;lt;running&amp;gt;. MD-SAL does not support an explicit &amp;lt;candidate&amp;gt; store simply because of its transactional nature: each transaction is an isolated candidate store. Furthermore interaction between &amp;lt;running&amp;gt; and &amp;lt;startup&amp;gt; is left an implementation/use case detail &#8211; CDS persists at each committed transaction, IMDS never persists.&lt;/p&gt;

&lt;p&gt;Therefore CONFIGURATION really means &amp;lt;running&amp;gt;, with the above restrictions. We will not define handling for &amp;lt;startup&amp;gt; and &amp;lt;candidate&amp;gt; &#8211; these will remain undefined in core APIs and will cause run-time failures if they are attempted to be used in contexts which do not support them.&lt;/p&gt;</description>
                <environment></environment>
        <key id="31771">MDSAL-460</key>
            <summary>Define a replacement for LogicalDatastoreType</summary>
                <type id="10001" iconUrl="https://jira.opendaylight.org/images/icons/issuetypes/story.svg">Story</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <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="rovarga">Robert Varga</reporter>
                        <labels>
                    </labels>
                <created>Wed, 3 Jul 2019 21:04:59 +0000</created>
                <updated>Tue, 9 Jan 2024 09:11:30 +0000</updated>
                                                            <fixVersion>14.0.0</fixVersion>
                                    <component>Binding API</component>
                    <component>DOM API</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="67029" author="rovarga" created="Thu, 25 Jul 2019 21:14:05 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-1012&quot; title=&quot;Improve RFC8528/RFC8525 parsing interoperability&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-1012&quot;&gt;YANGTOOLS-1012&lt;/a&gt; delivers DatastoreIdentifier, which acts as the identifier for datastores in yang-data-api. It satisfies the requirements for the replacement class.&lt;/p&gt;</comment>
                            <comment id="67030" author="rovarga" created="Thu, 25 Jul 2019 21:14:52 +0000"  >&lt;p&gt;Once we have yangtools-3.0.4, we can concentrate on providing a migration path &#8211; such as an efficient codec.&lt;/p&gt;</comment>
                            <comment id="72906" author="rovarga" created="Sat, 9 Dec 2023 18:04:21 +0000"  >&lt;p&gt;Once we have disconnected serialization of DOMDataTreeIdentifier (and do not need backwards read compatibility), we can start exploring having two versions on DOMDataTreeIdentifier:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
sealed &lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt; DOMDataTreeIdentifier {
    non-sealed &lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt; Classic &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; DOMDataTreeIdentifier, LogicalDatastorePath {
        &lt;span class=&quot;code-comment&quot;&gt;// Works with LogicalDatastoreType
&lt;/span&gt;    }

    non-sealed &lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt; NMDA &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; DOMDataTreeIdentifier, LogicalDataStorePath {
        &lt;span class=&quot;code-comment&quot;&gt;// Works with datastore QNames
&lt;/span&gt;    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;the same story holds for DataTreeIdentifier, except here we would use BindingIdentity-derived generated classes.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="37727">MDSAL-844</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="31825">YANGTOOLS-1012</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <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_10002" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>MDSAL-358</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03obr:</customfieldvalue>

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