<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:11:07 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-847] Reconcille DOM{Action,Rpc}Service availability listeners</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-847</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;DOMRpcService has integrated support for availability listeners, from long time ago.&lt;br/&gt;
DOMActionService has the equivalent (but delta-driven) capability exposed via an extension.&lt;/p&gt;

&lt;p&gt;RPCs and Actions are essentially the same thing, behaving very much the same way, so the two should take the same approach.&lt;/p&gt;

&lt;p&gt;There are points to argue both ways:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;an implementation bound to an EffectiveModelContext can enumerate the available RPCs and can react to schema changes&lt;/li&gt;
	&lt;li&gt;a random implementation may not be cognizant of what it actually can route&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;In DOM world, we assume NormalizedNodes, which need EMC support to translate to/from XML/JSON/CoAP. But that is not be-all and end-all of serialization and it is possible, but not likely, that a provider could marshall NormalizedNodes to and from a remote service which DOES NOT expose a push channel as to what is actually available.&lt;/p&gt;

&lt;p&gt;When we take MD-SAL to a distributed system, we assume that information about RPC endpoints is flooded, with DOMRpcImplementation.invocationCost() driving routing selection &amp;#8211; potentially crossing multiple relays until the endpoint is reached.&lt;/p&gt;

&lt;p&gt;The other argument is that plain DOMActionService does not support any sort of enumeration &amp;#8211; which is a hindrance to reflection and being friendly to humans asking &quot;what is it I can do with this system?&quot;&lt;/p&gt;

&lt;p&gt;Finally, there is point of DOMNotificationPublishDemandExtension, which essentially is the opposite &amp;#8211; informing a client of DOMNotificationPublishService that it should start producing some DOMNotifications if it can. The lifecycle is different, as it pertains to dynamic subscription, but the synchrony is the same.&lt;/p&gt;

&lt;p&gt;With all that context, I think we should integrate DOMActionAvailabilityExtension into DOMActionService &amp;#8211; thus saying that yes, available operations can be enumerated and can change in time (the problem with DOMSchemaService being a separate issue).&lt;/p&gt;

&lt;p&gt;So this task boils down to two things:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;eliminating DOMActionAvailabilityExtension and integrating its functionality directly into DOMActionService&lt;/li&gt;
	&lt;li&gt;reconciling the shape of DOMActionAvailabilityExtension.AvailabilityListener and DOMRpcAvailabilityListener&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;On that second point, I really think we should go with AvailabilityListener model, where we receive a disjunct delta: this was added, this was removed. This saves users from calculating a delta. The question to be answered is what to do about resyncs &amp;#8211; perhaps we need to callbacks:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;void onActionsChanged(Set&amp;lt;DOMActionInstance&amp;gt; removed, Set&amp;lt;DOMActionInstance&amp;gt; added);&lt;/li&gt;
	&lt;li&gt;void onActionsSet(Set&amp;lt;DOMActionInstance&amp;gt; available)&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The second is the equivalent of saying &quot;I don&apos;t know what is the last delta you have seen, this is the set we start from&quot;.&lt;/p&gt;
</description>
                <environment></environment>
        <key id="37730">MDSAL-847</key>
            <summary>Reconcille DOM{Action,Rpc}Service availability listeners</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="2" iconUrl="https://jira.opendaylight.org/images/icons/priorities/critical.svg">High</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>
                            <label>pt</label>
                    </labels>
                <created>Sat, 9 Dec 2023 18:44:58 +0000</created>
                <updated>Tue, 9 Jan 2024 09:16:17 +0000</updated>
                                                            <fixVersion>14.0.0</fixVersion>
                                    <component>DOM API</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                        <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|i0471r:</customfieldvalue>

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