Michael, Let us discuss this in tomorrow’s call, and arrive at a conclusion. Thanks, Faseela
From: [email protected] [mailto:[email protected]] On Behalf Of Michael Vorburger Sent: Tuesday, May 15, 2018 2:55 PM To: Muthukumaran K <[email protected]>; [email protected] Cc: [email protected]; Luis Gomez <[email protected]>; [email protected] Subject: Re: [genius-dev] [openflowplugin-dev] Autorelease build failing while adding dependency on genius-srm from openflowplugin Muthu, thanks for chiming in, but I am fundamentally against using any sort of "weakly typed hacks" to "work around" and "hide" what in effect ARE strong dependencies... so while I understand what you are getting at below from a technical PoV, they are total No Go, to me. Genius project commiters: Do we want to propose the creation of a new Git repo that is part of the Genius project governance and move genius/tools and genius/srm there so that OFP can consume it? On Tue, May 15, 2018 at 7:12 AM, Muthukumaran K <[email protected]<mailto:[email protected]>> wrote: One approach to handle the situation as below is to use a level of indirection using components which are very fundamental to Karaf and/or JVM so that hard dependencies are totally avoided. These approaches make the API semantics of SRM more event-based than explicit register-callback Option 1 in this specific context : SRM and OFP can communicate via EventAdmin wherein whenever SRM wants OFP to take an action, it just publishes a ‘notification’ to a pub-sub topic. So, SRM becomes eventadmin publisher and OFP becomes eventadmin subscriber Option 2 in this specific context : A bit compromised solution - using JMX. Following notify-react mechanism SRM fires a JMX notification and OFP listens and reacts Pros : 1) Across API boundary there is no explicit dependency 2) Version management would not be an issue because both Option 1 and Option 2 utilize more fundamental (more fundamental than Offset-0) services of Karaf and/or JVM Cons : 1) We can use only simplet types as notification payloads and not rich structured objects which should be acceptable for most of usecases Regards Muthu From: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] On Behalf Of Michael Vorburger Sent: Monday, May 14, 2018 10:35 PM To: Luis Gomez <[email protected]<mailto:[email protected]>> Cc: [email protected]<mailto:[email protected]>; [email protected]<mailto:[email protected]>; [email protected]<mailto:[email protected]> Subject: Re: [openflowplugin-dev] [genius-dev] Autorelease build failing while adding dependency on genius-srm from openflowplugin On Mon, May 14, 2018 at 6:59 PM, Luis Gomez <[email protected]<mailto:[email protected]>> wrote: afaik we do not allow cycles between projects so this code may require new project (if this has different scope than original) or new repo to resolve the conflict. Can you tell us more about the "new repo" option? If we could have a 2nd repo, which from a governance perspective is part of the existing genius project, to host the code that is currently in genius/tools and genius/srm, and build that before openflowplugin, and then openflowplugin and then after that the "main" genius, then that is probably a good solution to this problem. How would we get that? On May 14, 2018, at 8:05 AM, Michael Vorburger <[email protected]<mailto:[email protected]>> wrote: On Mon, May 14, 2018 at 1:52 PM, D Arunprakash <[email protected]<mailto:[email protected]>> wrote: Hello, We are trying to use the genius service recovery framework(srm-api) from openflowplugin. https://git.opendaylight.org/gerrit/#/c/68998/ Since, odl-genius-srm was exposed as an independent feature and srm-api doesn’t dependent on ofp, we didn’t find any issues during compiling or feature install. But the autorelease validate jenkin build always failing with the below error. https://jenkins.opendaylight.org/releng/job/openflowplugin-validate-autorelease-fluorine/81/console 09:17:41 + ./scripts/determine-merge-order.py 09:17:42 Traceback (most recent call last): 09:17:42 File "./scripts/determine-merge-order.py", line 80, in <module> 09:17:42 determine_merge_order() 09:17:42 File "./scripts/determine-merge-order.py", line 68, in determine_merge_order 09:17:42 for d in deps_order: 09:17:42 File "/w/workspace/openflowplugin-validate-autorelease-fluorine/venv/lib/python2.7/site-packages/networkx/algorithms/dag.py", line 197, in topological_sort 09:17:42 raise nx.NetworkXUnfeasible("Graph contains a cycle or graph changed " 09:17:42 networkx.exception.Ne<http://networkx.exception.Ne>tworkXUnfeasible: Graph contains a cycle or graph changed during iteration 09:17:42 Build step 'Execute shell' marked build as failure 09:17:42 $ ssh-agent -k Could you please let us know if the feature exposed from genius is proper or jenkin autorelease script detect the circular dependency, even though the odl-genius-srm doesn’t dependent on ofp. Arun, yeah you (OFP) should be able to depend on odl-genius-srm now, that's what all the effort of Moving datastore related utils from mdsalutil to new "genius.tools" was all about... I just had a look (on latest master) through genius/srm and genius/features/odl-genius-srm to make sure we didn't forget anything obvious, but all seems right to me... integration-dev: could any of you shed light on exactly what the failure above is trying to tell us - what cycle in the graph has this found? One thought: Are we allowed to have cycles between projects as long as artifacts themselves don't have cycles? Because that is what we are doing here - ofp wants genius.srm which needs genius.tools, which is independant of the rest of all of genius. genius.mdsalutils and the rest of genius is dependant on ofp. Or is that ^^^ is a problem for integration/autorelease? But why? there isn't really a cycle; and you can build this in a Maven reactor from sources without requiring binaries. Otherwise we have a bigger problem. Resolving that would require an entire new ODL project. OMG the paperwork... :-( Tx, M. -- Michael Vorburger, Red Hat [email protected]<mailto:[email protected]> | IRC: vorburger @freenode | ~ = http://vorburger.ch<http://vorburger.ch/> Regards, Arun _______________________________________________ genius-dev mailing list [email protected]<mailto:[email protected]> https://lists.opendaylight.org/mailman/listinfo/genius-dev _______________________________________________ openflowplugin-dev mailing list [email protected]<mailto:[email protected]> https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev
_______________________________________________ openflowplugin-dev mailing list [email protected] https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev
