<!-- 
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-1093] Join yang resource providers from restconf-nb and yanglib into single service</title>
                <link>https://jira.opendaylight.org/browse/NETCONF-1093</link>
                <project id="10142" key="NETCONF">netconf</project>
                    <description>&lt;p&gt;Currently there two web services with own endpoints providing yang sources by module/submodule name and revision:&lt;/p&gt;

&lt;p&gt;RestconfSchemaService(Impl) of r&lt;b&gt;estconf-nb&lt;/b&gt;&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;path: &#160;(host:port)/rests/modules/(name)/(revision)&lt;/li&gt;
	&lt;li&gt;content-types: application/yang, application/xml+yin&lt;/li&gt;
	&lt;li&gt;source: DOMSchemaService instance&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;YangLibService(YangLibProvider) of &lt;b&gt;yanglib&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;path: (host:port)/yanglib/schemas/(name)/(revision)&lt;/li&gt;
	&lt;li&gt;content-types: application/yang, text/plain&lt;/li&gt;
	&lt;li&gt;source: local &lt;span class=&quot;error&quot;&gt;&amp;#91;karaf&amp;#93;&lt;/span&gt; directory with yang files&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;In order to make URLs and produced content-types consistent, and to simplify the maintenance it makes sense to join these services into single one.&lt;/p&gt;

&lt;p&gt;Due to restconf-nb service also serves yang resources of mounted devices it seems reasonable to move functionality&#160; of &lt;b&gt;yanglib&lt;/b&gt; to &lt;b&gt;restconf-nb&lt;/b&gt;.&#160;&lt;/p&gt;

&lt;p&gt;In order to differentiate the sources it makes sense to use multiple schemas (and/or module-sets).&lt;br/&gt;
Suggested URL then became (host:port)/modules/(source-id)/(name)/(revision)&lt;br/&gt;
where source-id will reference where the yang resource expected to be taken from.&lt;/p&gt;

&lt;p&gt;It requires clarification either yang resources from a local folder (current yanglib functionality) need to be populated to yang-library data or it can be omitted as not a part of global context (similar to resources on mounted device)&lt;/p&gt;</description>
                <environment></environment>
        <key id="37121">NETCONF-1093</key>
            <summary>Join yang resource providers from restconf-nb and yanglib into single service</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="1" iconUrl="https://jira.opendaylight.org/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="ivanhrasko">Ivan Hrasko</assignee>
                                    <reporter username="rkashapov">Ruslan Kashapov</reporter>
                        <labels>
                            <label>pick-next</label>
                            <label>pt</label>
                    </labels>
                <created>Wed, 19 Jul 2023 10:56:42 +0000</created>
                <updated>Tue, 19 Sep 2023 12:39:01 +0000</updated>
                                                            <fixVersion>7.0.0</fixVersion>
                                    <component>restconf-nb</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="72410" author="ivanhrasko" created="Thu, 20 Jul 2023 07:38:51 +0000"  >&lt;p&gt;IMO the restconf-nb is providing controller modules and yanglib is providing what is in cache/schema (YANG models downloaded from mounted devices).&lt;/p&gt;</comment>
                            <comment id="72413" author="JIRAUSER13216" created="Thu, 20 Jul 2023 08:55:23 +0000"  >&lt;p&gt;the mapped URI for restconf-nb service is /rests/modules/(identifier.+)&lt;/p&gt;

&lt;p&gt;the expected &quot;identifier&quot; is either (module_name/revision) or (path/to/mount/point/module_name/revision)&lt;br/&gt;
first retrieves model from global context, second from mounted device&lt;/p&gt;

&lt;p&gt;the question to clarify how current service correlates to yang-library?&lt;/p&gt;

&lt;p&gt;if yang-library is just generate URL to existing service when constructing yang-library data&#160;&lt;br/&gt;
then we should make &lt;b&gt;yanglib&lt;/b&gt; service a part of restconf-nb (no part of yanglib)&lt;br/&gt;
extending restconf service, just make a 3rd case parsing &quot;identifier&quot;&lt;/p&gt;</comment>
                            <comment id="72414" author="ivanhrasko" created="Thu, 20 Jul 2023 10:45:00 +0000"  >&lt;p&gt;IMO I would remove yanglib as it is. It reads YANG files from cache/schema and we need to restart karaf to see new models. I expect we will not have this kind of issues with data-store approach - using device&apos;s schema context.&lt;/p&gt;</comment>
                            <comment id="72415" author="ivanhrasko" created="Thu, 20 Jul 2023 10:46:52 +0000"  >&lt;p&gt;In fact, we should join this functionality in &lt;b&gt;apps/yanglib-mdsal-writer&lt;/b&gt; as proposed by &lt;a href=&quot;https://jira.opendaylight.org/browse/NETCONF-668&quot; title=&quot;RFC7895/RFC8525 implementation should be independent of any other modules in a separate feature&quot; class=&quot;issue-link&quot; data-issue-key=&quot;NETCONF-668&quot;&gt;&lt;del&gt;NETCONF-668&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="72606" author="ivanhrasko" created="Tue, 19 Sep 2023 10:22:59 +0000"  >&lt;p&gt;Please verify that we can read both controller&apos;s and device&apos;s models by &lt;b&gt;restconf-nb&lt;/b&gt;&apos;s modules/module{yang-ext:mount} and remove &lt;b&gt;yanglib.&lt;/b&gt;&lt;/p&gt;</comment>
                            <comment id="72607" author="ivanhrasko" created="Tue, 19 Sep 2023 10:27:50 +0000"  >&lt;p&gt;If its not possible to get device&apos;s modules then design solution to use mount-point&apos;s &lt;b&gt;DOMSchemaService&lt;/b&gt; to retrieve devices modules on path:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;../modules/modules/network-topology:network-topology/topology=topology-netconf/node=17830-sim-device/yang-ext:mount/{module-name}/{module-revision}&lt;/b&gt;&lt;/p&gt;</comment>
                            <comment id="72608" author="ivanhrasko" created="Tue, 19 Sep 2023 10:38:12 +0000"  >&lt;p&gt;&lt;b&gt;restconf-nb&lt;/b&gt; works for both controller&apos;s and device&apos;s modules, thus:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;remove &lt;b&gt;yanglib&lt;/b&gt; bundle&lt;/li&gt;
	&lt;li&gt;remove &lt;b&gt;yanglib&lt;/b&gt; feature&lt;/li&gt;
	&lt;li&gt;adapt documentation with examples how to use &lt;b&gt;restconf-nb&lt;/b&gt; instead of &lt;b&gt;yanglib&lt;/b&gt; (replace &lt;a href=&quot;https://docs.opendaylight.org/projects/netconf/en/latest/user-guide.html#yanglib-remote-repository&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://docs.opendaylight.org/projects/netconf/en/latest/user-guide.html#yanglib-remote-repository&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="72609" author="JIRAUSER13216" created="Tue, 19 Sep 2023 12:39:01 +0000"  >&lt;p&gt;yanglib serves as remote repository, it provides yang resources from configured local folder.&lt;/p&gt;

&lt;p&gt;accessing device models should not be treated as the only purpose of the service.&lt;br/&gt;
seems only testtool dumps own models to yanglib folder, but netconf-topology does not do it when real device is mounted.&lt;/p&gt;

&lt;p&gt;so if yanglib is removed the remote repository functionality will be lost.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="37122">MDSAL-834</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="32595">NETCONF-668</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="36732">NETCONF-974</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </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_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i045tb:</customfieldvalue>

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