<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 22, 2016 at 12:13 PM, Martin Sivak <span dir="ltr">&lt;<a href="mailto:msivak@redhat.com" target="_blank">msivak@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">&gt; It is not about having a topic but listing what should be posted to that<br>
&gt; topic.<br>
<br>
</span>That is the whole point of having a hierarchical topic based system.<br>
Engine would listen for anything coming from vdsm, vdsm would listen<br>
for anything that comes from engine using a path wildcard.<br>
<br></blockquote><div><br></div><div>We do not have hierarchical topic system. Please note that we have<br></div><div>p2p communication and real broker is not part of the scope anymore.<br></div><div>We only have mini broker implemented in vdsm.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Just use a /verb/&lt;verbName&gt; topic for each verb command automatically<br>
and either the same or something like<br>
/response/&lt;verbName&gt;/&lt;correlation id&gt; for the answer.<br>
<br>
There is no reason to distinguish verbs and events. Both are events<br>
and the only difference is whether the initiating party is waiting for<br>
a response. You need some kind of correlation id for that of course<br>
(to identify the specific answer you are waiting for).<br>
<span class=""><br></span></blockquote><div><br></div><div>There is distinction based on historical reasons.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
&gt; I am not sure whether it is good idea for sever to know<br>
&gt; what should be send where.<br>
<br>
</span>The sender always decides what the topic it is. At least in the rest<br>
of the broker universe. There is no such thing as a server or client,<br>
just publisher and listener for specific message topic wildcard.<br>
<span class=""><br>
&gt; Sending to multiple topics is there but selecting a subset to send to one of<br>
&gt; them<br>
<br>
</span>But you never do that, you send to one topic (full path) only and the<br>
listener decides what is interesting enough. The tree structure allows<br>
that (not sure about our implementation, but all standard brokers<br>
support this):<br>
<br>
/verb/runVm will be received by anybody listening for that or for<br>
/verb/* or for /*.<br>
<br>
The same for /response/runVm/16846158. MOM or hosted engine does not<br>
care about which exact command initiated the response and can listen<br>
for /response/runVm/*. On the other hand, the engine can be blocked in<br>
the call until the right response arrives.<br>
<span class="HOEnZb"><font color="#888888"><br></font></span></blockquote><div><br></div><div>Please remember that we are not message based but we have 2 logical<br></div><div>ways of dealing with network frames:<br></div><div>- rpc<br></div><div>- events (aka messages)<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="HOEnZb"><font color="#888888">
<br>
Martin<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Wed, Jun 22, 2016 at 12:00 PM, Piotr Kliczewski &lt;<a href="mailto:pkliczew@redhat.com">pkliczew@redhat.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Jun 22, 2016 at 11:40 AM, Martin Sivak &lt;<a href="mailto:msivak@redhat.com">msivak@redhat.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; &gt; If we subscribe to engine response queue we receive all the traffic. At<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; moment there is no way<br>
&gt;&gt; &gt; to define verbs we listen to. This functionality is only for events.<br>
&gt;&gt;<br>
&gt;&gt; Can&#39;t we create a new topic /engine/&lt;verb&gt; for each verb and configure<br>
&gt;&gt; vdsm to listen for /engine/*? That would duplicate what we have now,<br>
&gt;&gt; but MOM would be able to subscribe more selectively.<br>
&gt;&gt;<br>
&gt;<br>
&gt; It is not about having a topic but listing what should be posted to that<br>
&gt; topic.<br>
&gt; Sending to multiple topics is there but selecting a subset to send to one of<br>
&gt; them<br>
&gt; would need to be added. I am not sure whether it is good idea for sever to<br>
&gt; know<br>
&gt; what should be send where.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; Martin<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Jun 22, 2016 at 11:24 AM, Piotr Kliczewski &lt;<a href="mailto:pkliczew@redhat.com">pkliczew@redhat.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Wed, Jun 22, 2016 at 10:39 AM, Michal Skrivanek<br>
&gt;&gt; &gt; &lt;<a href="mailto:michal.skrivanek@redhat.com">michal.skrivanek@redhat.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On 20 Jun 2016, at 18:41, Piotr Kliczewski &lt;<a href="mailto:pkliczew@redhat.com">pkliczew@redhat.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Mon, Jun 20, 2016 at 6:22 PM, Nir Soffer &lt;<a href="mailto:nsoffer@redhat.com">nsoffer@redhat.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; On Mon, Jun 20, 2016 at 11:33 AM, Martin Sivak &lt;<a href="mailto:msivak@redhat.com">msivak@redhat.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; 1. Mom is still using xmlrpc<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Mom must move to jsonrpc.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Martin: can you update on progress of this work?<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; We would like to avoid going through VDSM completely, except from<br>
&gt;&gt; &gt;&gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt;&gt; &gt; broker part. Is it possible now to &quot;parasitically&quot; listen to vdsm<br>
&gt;&gt; &gt;&gt;&gt; &gt; events and engine commands without having to go through VDSM API?<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Sounds like a good plan.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; bypassing vdsm for mom things is a good idea, but we need to make sure<br>
&gt;&gt; &gt;&gt; we’re not killing the rest of the system<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Piotr, how far are we from letting mom listen to engine queue so it<br>
&gt;&gt; &gt;&gt;&gt; get<br>
&gt;&gt; &gt;&gt;&gt; engine<br>
&gt;&gt; &gt;&gt;&gt; events/responses for certain verbs?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; We can do it now for both events and responses. We need to remember<br>
&gt;&gt; &gt;&gt; that<br>
&gt;&gt; &gt;&gt; we would<br>
&gt;&gt; &gt;&gt; receive anything that the engine is receiving. We could do better but<br>
&gt;&gt; &gt;&gt; that<br>
&gt;&gt; &gt;&gt; it would take<br>
&gt;&gt; &gt;&gt; more time.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; so it would receive all responses for only the defined verbs?<br>
&gt;&gt; &gt;&gt; It would wok well for getAllVmStats<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; If we subscribe to engine response queue we receive all the traffic. At<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; moment there is no way<br>
&gt;&gt; &gt; to define verbs we listen to. This functionality is only for events.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; You can drop XML RPC,. vdsm does not depend on MOM working anymore.<br>
&gt;&gt; &gt;&gt;&gt; &gt; Just the balloon and ksm stats will be missing from data that are<br>
&gt;&gt; &gt;&gt;&gt; &gt; being sent to the engine.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; and a lot of things stops working then;)<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Maybe we can disable [1] it before dropping it. We can slowly fix master<br>
&gt;&gt; &gt; and<br>
&gt;&gt; &gt; if needed we can enable it for<br>
&gt;&gt; &gt; specific envs.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; [1] <a href="https://gerrit.ovirt.org/#/c/59172/" rel="noreferrer" target="_blank">https://gerrit.ovirt.org/#/c/59172/</a><br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Balloon and ksm stats are sent today from mom to vdsm, and reported by<br>
&gt;&gt; &gt;&gt;&gt; vdsm to engine?<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; If vdsm is only a middleman  and does not use this info, best to send<br>
&gt;&gt; &gt;&gt;&gt; it directly<br>
&gt;&gt; &gt;&gt;&gt; to engine via the stomp broker part of vdsm.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Piotr, how far are we from having engine listening for mom events<br>
&gt;&gt; &gt;&gt;&gt; using<br>
&gt;&gt; &gt;&gt;&gt; the<br>
&gt;&gt; &gt;&gt;&gt; vdsm broker?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I don’t think we should move any monitoring pulled from libvirt into<br>
&gt;&gt; &gt;&gt; mom -<br>
&gt;&gt; &gt;&gt; it would need another expensive and problematic call<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; It can be used now but the engine needs to know to listen for them. We<br>
&gt;&gt; &gt;&gt; would<br>
&gt;&gt; &gt;&gt; need to implement engine subscriber (one class).<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; There also were some issues with eventfd in the json library, I<br>
&gt;&gt; &gt;&gt;&gt; &gt; assume<br>
&gt;&gt; &gt;&gt;&gt; &gt; those are fixed now.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; They should be fixed here:<br>
&gt;&gt; &gt;&gt;&gt; <a href="https://gerrit.ovirt.org/57942" rel="noreferrer" target="_blank">https://gerrit.ovirt.org/57942</a><br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; But suffering from these issue show that the api was not use properly,<br>
&gt;&gt; &gt;&gt;&gt; you should create one client and reuse it for the entire life of the<br>
&gt;&gt; &gt;&gt;&gt; application.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Nir<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; Martin<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; On Sun, Jun 19, 2016 at 1:02 PM, Nir Soffer &lt;<a href="mailto:nsoffer@redhat.com">nsoffer@redhat.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Hi all,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; We are still wasting time on maintaining both xmlrpc and jsonrpc.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; If<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; we kill<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; xmlrpc, we can greatly simplify the code base, making it easier to<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; mainain<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; and add new features.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; I suggest to kill xmlrpc in 4.1, and disable it *now* on master.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Currently the we have 3 issues:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; 1. Mom is still using xmlrpc<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Mom must move to jsonrpc.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Martin: can you update on progress of this work?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; 2. sos plugin using vdsClient<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Need to port it to use jsonrpc library, or jsonrpc client<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; New jsonrpc client:  <a href="https://gerrit.ovirt.org/35181" rel="noreferrer" target="_blank">https://gerrit.ovirt.org/35181</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; 3. Engine is using xmlrpc server for ovf upload/download<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; We must support current engine in 4.1, so we cannot remove<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; upload/download feature in this version, but we can remove the<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; xmlrpc support in this server.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Currently we abuse the xmlrpc server, supporting PUT and GET for<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; upload and download (XMLRPC is using only POST). We can disable<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; POST requests in protocoldetector, and not register anything with<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; the xmlrpc server.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Thoughts?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Nir<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; Devel mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:Devel@ovirt.org">Devel@ovirt.org</a><br>
&gt;&gt; &gt;&gt; <a href="http://lists.ovirt.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.ovirt.org/mailman/listinfo/devel</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div></div>