<!-- 
RSS generated by JIRA (9.4.5#940005-sha1:e3094934eac4fd8653cf39da58f39364fb9cc7c1) at Sat Feb 10 05:58:16 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>Akraino JIRA</title>
    <link>https://jira.akraino.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.5</version>
        <build-number>940005</build-number>
        <build-date>11-04-2023</build-date>
    </build-info>


<item>
            <title>[ICN-233] OpenNESS gap for Cross-Node communication</title>
                <link>https://jira.akraino.org/browse/ICN-233</link>
                <project id="10400" key="ICN">Integrated Cloud Native NFV</project>
                    <description>&lt;p&gt;Investigate Cross-Node (e.g. producer/consumer communication) gap for OpenNESS integration&lt;/p&gt;</description>
                <environment></environment>
        <key id="11086">ICN-233</key>
            <summary>OpenNESS gap for Cross-Node communication</summary>
                <type id="10002" iconUrl="https://jira.akraino.org/secure/viewavatar?size=xsmall&amp;avatarId=10318&amp;avatarType=issuetype">Task</type>
                                            <priority id="2" iconUrl="https://jira.akraino.org/images/icons/priorities/high.svg">High</priority>
                        <status id="10001" iconUrl="https://jira.akraino.org/" description="">Done</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="ChenjieXu">Chenjie Xu</assignee>
                                    <reporter username="hle2">Huifeng Le</reporter>
                        <labels>
                    </labels>
                <created>Thu, 9 Jan 2020 02:54:02 +0000</created>
                <updated>Thu, 16 Jul 2020 00:22:50 +0000</updated>
                            <resolved>Fri, 17 Jan 2020 08:01:20 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="11022" author="chenjiexu" created="Fri, 17 Jan 2020 08:27:47 +0000"  >&lt;p&gt;The gap analysis has been added to the Akraino ICN OpenNESS wiki page as following:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://wiki.akraino.org/display/AK/OpenNESS+19.12+Investigation#OpenNESS19.12Investigation-Cross-Nodecommunication&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://wiki.akraino.org/display/AK/OpenNESS+19.12+Investigation#OpenNESS19.12Investigation-Cross-Nodecommunication&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="11014" author="chenjiexu" created="Mon, 13 Jan 2020 02:34:27 +0000"  >&lt;p&gt;By changing the common name and myURN of openvino consumer,&#160;&#160;openvino-cons-app and&#160;openvino-cons-app2 will use different version of docker image&#160;openvino-cons-app, and they both can run and consume the same producer. The logs are below:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;root@master consumer&amp;#93;&lt;/span&gt;# kubectl get pod&lt;br/&gt;
NAME READY STATUS RESTARTS AGE&lt;br/&gt;
openvino-cons-app 1/1 Running 0 111s&lt;br/&gt;
openvino-cons-app2 1/1 Running 0 17s&lt;br/&gt;
openvino-prod-app 1/1 Running 4 2d18h&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;root@master consumer&amp;#93;&lt;/span&gt;# kubectl logs openvino-cons-app&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;setupvars.sh&amp;#93;&lt;/span&gt; OpenVINO environment initialized&lt;br/&gt;
2020/01/13 02:22:53 OpenVINO Consumer Started&lt;br/&gt;
2020/01/13 02:22:53 WebSocket establishment successful&lt;br/&gt;
2020/01/13 02:22:53 Subscribed to notification: openvino-inference 1.0.0&lt;br/&gt;
2020/01/13 02:22:53 Subscribed to notification: terminate 1.0.0&lt;br/&gt;
2020/01/13 02:23:44 Rx notification &amp;#8211; vehicle-detection-adas-0002 | CPU&lt;br/&gt;
2020/01/13 02:24:44 Rx notification &amp;#8211; pedestrian-detection-adas-0002 | CPU&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;root@master consumer&amp;#93;&lt;/span&gt;# kubectl logs openvino-cons-app2&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;setupvars.sh&amp;#93;&lt;/span&gt; OpenVINO environment initialized&lt;br/&gt;
2020/01/13 02:24:21 OpenVINO Consumer Started&lt;br/&gt;
2020/01/13 02:24:41 WebSocket establishment successful&lt;br/&gt;
2020/01/13 02:24:46 Subscribed to notification: openvino-inference 1.0.0&lt;br/&gt;
2020/01/13 02:24:46 Subscribed to notification: terminate 1.0.0&lt;br/&gt;
2020/01/13 02:24:46 Rx notification &amp;#8211; pedestrian-detection-adas-0002 | CPU&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;root@master consumer&amp;#93;&lt;/span&gt;# kubectl describe pod openvino-cons-app | grep Image&lt;br/&gt;
 Image: openvino-cons-app:1.0&lt;br/&gt;
 Image ID: docker://sha256:b691b193662743554ab9c240ea5ed3dcb21765695fa0d27afaae1be24c6715d4&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;root@master consumer&amp;#93;&lt;/span&gt;# kubectl describe pod openvino-cons-app2 | grep Image&lt;br/&gt;
 Image: openvino-cons-app:2.0&lt;br/&gt;
 Image ID: docker://sha256:8163d1887505ef6790902032f796ee326ed0beb958f3ba6736113214ac5aeece&lt;/p&gt;</comment>
                            <comment id="11013" author="chenjiexu" created="Mon, 13 Jan 2020 02:22:02 +0000"  >&lt;p&gt;A map is used to store consumer connections as following:&lt;br/&gt;
 &lt;a href=&quot;https://github.com/open-ness/edgenode/blob/master/pkg/eaa/main.go#L23&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/open-ness/edgenode/blob/master/pkg/eaa/main.go#L23&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The common name is used as the key of the map:&lt;br/&gt;
&lt;a href=&quot;https://github.com/open-ness/edgeapps/blob/master/openvino/consumer/cmd/main.go#L42&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/open-ness/edgeapps/blob/master/openvino/consumer/cmd/main.go#L42&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://github.com/open-ness/edgenode/blob/master/pkg/eaa/api_consumer.go#L57&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/open-ness/edgenode/blob/master/pkg/eaa/api_consumer.go#L57&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As the openvino-cons-app and openvino-cons-app2 is 2 instances of the same microservice, they share the same common name. When&#160;openvino-cons-app2 starts successfully and try to register with eaa, eaa will detect whether this common name has registerd or not as following:&lt;br/&gt;
&lt;a href=&quot;https://github.com/open-ness/edgenode/blob/master/pkg/eaa/api_consumer.go#L37&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/open-ness/edgenode/blob/master/pkg/eaa/api_consumer.go#L37&lt;/a&gt;&lt;br/&gt;
Because the common name has been registered by openvino-cons-app, eaa will close the connection of openvino-cons-app as following:&lt;br/&gt;
 &lt;a href=&quot;https://github.com/open-ness/edgenode/blob/master/pkg/eaa/api_consumer.go#L41&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/open-ness/edgenode/blob/master/pkg/eaa/api_consumer.go#L41&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="11012" author="chenjiexu" created="Fri, 10 Jan 2020 08:52:30 +0000"  >&lt;p&gt;Finding a bug within openness:&lt;br/&gt;
 If we run multiple instances of same consumer, only one consumer can work.&#160;&lt;/p&gt;

&lt;p&gt;For example:&lt;br/&gt;
 consumer1 and consumer2 are 2 instances of the same consumer. Assume we run consumer1 firstly. After we run consumer2, consumer1 will lost the connection and restart. After consumer1 restart successfully, consumer2 will lost connection and restart.&#160;&lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;node1&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;node2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; eaa&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;br/&gt;
 &#160; &#160;producer1&#160; &#160; consumer1&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;consumer2&#160;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;The logs are below:&lt;br/&gt;
 &lt;span class=&quot;error&quot;&gt;&amp;#91;root@master consumer&amp;#93;&lt;/span&gt;# kubectl logs openvino-cons-app2&lt;br/&gt;
 &lt;span class=&quot;error&quot;&gt;&amp;#91;setupvars.sh&amp;#93;&lt;/span&gt; OpenVINO environment initialized&lt;br/&gt;
 2020/01/10 08:42:28 OpenVINO Consumer Started&lt;br/&gt;
 2020/01/10 08:42:28 WebSocket establishment successful&lt;br/&gt;
 2020/01/10 08:42:28 Subscribed to notification: openvino-inference 1.0.0&lt;br/&gt;
 2020/01/10 08:42:28 Subscribed to notification: terminate 1.0.0&lt;br/&gt;
 2020/01/10 08:42:30 Failed to read message from WebSocket: websocket: close 1012: New connection request, closing this connection&lt;br/&gt;
 ./start.sh: line 10: fg: no job control&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;root@master consumer&amp;#93;&lt;/span&gt;# kubectl get pod -o wide&lt;br/&gt;
 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES&lt;br/&gt;
 openvino-cons-app&#160; &#160; 1/1&#160; &#160; Running&#160; &#160;3&#160; &#160;63m&#160; &#160; 10.16.0.17&#160; &#160; node1 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;&lt;br/&gt;
 openvino-cons-app2&#160; &#160;0/1&#160; &#160;Error&#160; &#160; &#160; &#160; &#160;4&#160; &#160;62m&#160; &#160; 10.16.0.18&#160; &#160; node2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;&lt;br/&gt;
 openvino-prod-app&#160; &#160; 1/1&#160; &#160; Running&#160; &#160;0&#160; &#160;74m&#160; &#160; 10.16.0.3&#160; &#160; &#160; node1 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;&lt;/p&gt;</comment>
                            <comment id="11011" author="chenjiexu" created="Fri, 10 Jan 2020 08:36:42 +0000"  >&lt;p&gt;Because edge apps on different edge node all can access service eaa, the consumer can consume the service provided by producer which is on a different node.&lt;/p&gt;

&lt;p&gt;For example:&lt;br/&gt;
producer1 is located in node1 and consumer2 is located on node2. The networking flow will be:&lt;br/&gt;
&#160; &#160;producer1 -&amp;gt; service eaa -&amp;gt; pod eaa&lt;br/&gt;
&#160; &#160;consumer2 -&amp;gt; service eaa -&amp;gt; pod eaa&lt;br/&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;node1&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;node2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; eaa&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;br/&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; producer1&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;consumer2&#160; &#160; &#160;&lt;/p&gt;</comment>
                            <comment id="11010" author="chenjiexu" created="Fri, 10 Jan 2020 08:29:06 +0000"  >&lt;p&gt;eaa is deployed as a deployment and only 1 eaa will be deployed:&lt;br/&gt;
 &lt;a href=&quot;https://github.com/open-ness/edgecontroller/blob/master/kube-ovn/openness.yaml#L41&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/open-ness/edgecontroller/blob/master/kube-ovn/openness.yaml#L41&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because all edge apps will access only 1 eaa, it doesn&apos;t matter that eaa is stateful.&#160;&lt;/p&gt;

&lt;p&gt;For example:&lt;br/&gt;
only 1 eaa is deployed on node1. producer1 and producer2 will activate the new service with eaa. consumer1 and consumer2 will consume services stored in eaa. Because all the information are stored in only 1 eaa, there won&apos;t be issues.&#160;&lt;/p&gt;

&lt;p&gt;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; node1&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;node2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; eaa&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160;producer1&#160; &#160; &#160; consumer1&#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; producer2&#160;&#160; &#160;consumer2&#160; &#160; &#160; &#160; &#160; &#160;&lt;br/&gt;
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;/p&gt;</comment>
                            <comment id="11009" author="chenjiexu" created="Fri, 10 Jan 2020 08:18:47 +0000"  >&lt;p&gt;Edge apps will access eaa through eaa.openness (name.namespace) which is a kubernetes service:&lt;br/&gt;
&lt;a href=&quot;https://github.com/open-ness/edgecontroller/blob/master/kube-ovn/openness.yaml#L18&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/open-ness/edgecontroller/blob/master/kube-ovn/openness.yaml#L18&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example: as following links show, openvino consumer will access&#160;&lt;a href=&quot;http://eaa.openness:443/auth&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://eaa.openness:443/auth&lt;/a&gt; for authentication.&lt;br/&gt;
&lt;a href=&quot;https://github.com/open-ness/edgeapps/blob/master/openvino/consumer/cmd/main.go#L24&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/open-ness/edgeapps/blob/master/openvino/consumer/cmd/main.go#L24&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://github.com/open-ness/edgeapps/blob/master/openvino/consumer/cmd/main.go#L66&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/open-ness/edgeapps/blob/master/openvino/consumer/cmd/main.go#L66&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="11008" author="chenjiexu" created="Fri, 10 Jan 2020 08:07:18 +0000"  >&lt;p&gt;Edge applications must introduce themselves to OpenNESS framework and identify if they would like to activate new edge services or consume an existing service. Edge Application Agent (EAA) component is the handler of all the edge applications hosted by the OpenNESS edge node and acts as their point-of-contact.&#160;&lt;/p&gt;

&lt;p&gt;OpenNESS-awareness involves (a) authentication, (b) service activation/deactivation, (c) service discovery, (d) service subscription, and (e) Websocket connection establishment. The Websocket connection retains a channel for EAA for notification forwarding to pre-subscribed consumer applications. Notifications are generated by &quot;producer&quot; edge applications and absorbed by &quot;consumer&quot; edge applications.&lt;/p&gt;

&lt;p&gt;The sequence of operations for the producer application:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Authenticate with OpenNESS edge node&lt;/li&gt;
	&lt;li&gt;Activate new service and include the list of notifications involved&lt;/li&gt;
	&lt;li&gt;Send notifications to OpenNESS edge node according to business logic&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The sequence of operations for the consumer application:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Authenticate with OpenNESS edge node&lt;/li&gt;
	&lt;li&gt;Discover the available services on OpenNESS edge platform&lt;/li&gt;
	&lt;li&gt;Subscribe to services of interest and listen for notifications&lt;/li&gt;
&lt;/ol&gt;
</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                        <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10100" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>ICN-191</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10105" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i00310:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10104" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="12">ICN Sprint 10</customfieldvalue>

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