<div dir="ltr"><div>Whoow, just missed a couple of days I see... thanks everybody for your already given support!! I will discuss this also with my colleague on Monday. And I must say I&#39;m impressed about all the fedback! This could be indeed a very nice extension to oVirt, because I guess we are not the only ones who are in need of this or will be in the future.<br></div>Thanks again!<br></div><div class="gmail_extra"><br><div class="gmail_quote">2014-10-31 22:51 GMT+01:00 Yair Zaslavsky <span dir="ltr">&lt;<a href="mailto:yzaslavs@redhat.com" target="_blank">yzaslavs@redhat.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
<br>
----- Original Message -----<br>
&gt; From: &quot;Einav Cohen&quot; &lt;<a href="mailto:ecohen@redhat.com">ecohen@redhat.com</a>&gt;<br>
&gt; To: &quot;Vojtech Szocs&quot; &lt;<a href="mailto:vszocs@redhat.com">vszocs@redhat.com</a>&gt;<br>
&gt; Cc: &quot;Oved Ourfali&quot; &lt;<a href="mailto:ovedo@redhat.com">ovedo@redhat.com</a>&gt;, <a href="mailto:users@ovirt.org">users@ovirt.org</a><br>
</span><span class="">&gt; Sent: Friday, October 31, 2014 9:01:34 PM<br>
&gt; Subject: Re: [ovirt-users] webhook<br>
&gt;<br>
</span><span class="">&gt; &gt; ----- Original Message -----<br>
&gt; &gt; From: &quot;Vojtech Szocs&quot; &lt;<a href="mailto:vszocs@redhat.com">vszocs@redhat.com</a>&gt;<br>
&gt; &gt; Sent: Friday, October 31, 2014 11:51:53 AM<br>
&gt; &gt;<br>
&gt; &gt; Hi,<br>
&gt; &gt;<br>
&gt; &gt; if I get this correctly, you&#39;d like to be notified when certain event<br>
&gt; &gt; happens (VM created/deleted/etc.) and react upon that. I see multiple<br>
&gt; &gt; possible approaches here:<br>
&gt; &gt;<br>
&gt; &gt; 0, improve Engine extension API (refer to Alon Bar-Lev for details)<br>
&gt; &gt;    - if extensions can be packaged as JARs and these JARs could include<br>
&gt; &gt;      web fragments [1] it would mean the possibility to deploy custom<br>
&gt; &gt;      servlets onto existing Engine instance (in context of webapp that<br>
&gt; &gt;      processes extensions)<br>
&gt; &gt;    - your custom Java servlet could query REST interface (or be notified<br>
&gt; &gt;      once something happens, but AFAIK we don&#39;t have that implemented yet)<br>
&gt; &gt;      and do whatever logic is needed<br>
&gt; &gt;    - once I asked Alon about ^^ but never got response from him<br>
&gt; &gt;    - IMHO this would be a nice way to deploy custom Java code on Engine<br>
<br>
</span>Please allow me to step in as someone who worked on the extensions API as well,<br>
There are more &quot;missing bits&quot; here.<br>
You are referring to the &quot;webapp side&quot;, but this is not enough.<br>
We have also the engine side which has to become more pluggable.<br>
In addition, we will probably need to handle all kinds of issues that rise from our singletons at engine - class loading might be an issue here, no?<br>
You don&#39;t want the &quot;X-ton&quot; (doubleton, tripleton, etc..) phenomena in your setup - you don&#39;t want for example X instances of AsyncTaskManager.<br>
I think that in general we should strive to turn engine into way more pluggable/modular than it is now, imagine an &quot;engine microkernel&quot; (for those of you who did not hear the term microkernel, I am referring you to jboss architecture) - we should have a &quot;thin microkernel&quot; and the rest of the code should be pluggable, using the extension API (and perhaps web fragments as well).<br>
What do you think?<br>
<div class="HOEnZb"><div class="h5"><br>
&gt; &gt;<br>
&gt; &gt; [1] <a href="https://blogs.oracle.com/swchan/entry/servlet_3_0_web_fragment" target="_blank">https://blogs.oracle.com/swchan/entry/servlet_3_0_web_fragment</a><br>
&gt; &gt;<br>
&gt; &gt; 1, improve UI plugin API<br>
&gt; &gt;    - add &quot;VirtualMachineDataLoaded&quot; event fired upon each refresh of<br>
&gt; &gt;      VM data in UI table (generalization -&gt; &quot;{Entity}DataLoaded&quot;)<br>
&gt; &gt;    - this is similar to existing &quot;{Entity}SelectionChange&quot; events<br>
&gt;<br>
&gt; relying on changes in the UI table is a bad idea:<br>
&gt;<br>
&gt; (1) potentially missing events:<br>
&gt; the UI displays paginated data; if my VMs are sorted by name, and<br>
&gt; I have 1000 VMs in my setup, and I just added a VM named &quot;z&quot;, it will<br>
&gt; be added to the last &quot;page&quot; which is not displayed right now, so I<br>
&gt; wouldn&#39;t even be aware that something was added.<br>
&gt;<br>
&gt; (2) potentially &quot;creating&quot; &quot;fake&quot; events:<br>
&gt; changes in the displayed data in the UI can occur due to change in the<br>
&gt; Search query; if I have 50 VMs in my setup, and I initially had the<br>
&gt; &quot;Vms:&quot; search query, and now I change it to &quot;VMs: name = a*&quot;, which<br>
&gt; results in displaying only 10 VMs, this may falsely hint on removal<br>
&gt; of 40 VMs from the system.<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; 2, write UI plugin that uses oVirtJS to periodically check VM events<br>
&gt;<br>
&gt; not sure if this is referring to VM-related events in the code (e.g.<br>
&gt; hooking to the click on &quot;OK&quot; within the New VM / Remove VM dialog,<br>
&gt; or hooking to the &quot;Success&quot; callback of the action response, or<br>
&gt; something similar), or to the VM-related &quot;Events&quot; (i.e. the ones that<br>
&gt; are displayed in the GUI within the Events main-tab / bottom section).<br>
&gt; If the former: can be done, I assume, though not sure how complex it<br>
&gt; would be to implement the infrastructure for that.<br>
&gt; If the latter: this will &quot;catch&quot; actions that were performed either<br>
&gt; via the GUI or outside the GUI; in this case, it would probably be<br>
&gt; better to use an Engine extension API (solution &quot;0&quot; above) rather<br>
&gt; than a UI plugin, since it will be more reliable, will be active<br>
&gt; even when the GUI is not in use, etc.<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; The disadvantage of 1, and 2, is that WebAdmin GUI must be open.<br>
&gt; &gt; In any case, if you&#39;d like to explore the possibility of doing this<br>
&gt; &gt; via UI plugin, I&#39;m here to help.<br>
&gt; &gt;<br>
&gt; &gt; Vojtech<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; ----- Original Message -----<br>
&gt; &gt; &gt; From: &quot;Oved Ourfali&quot; &lt;<a href="mailto:ovedo@redhat.com">ovedo@redhat.com</a>&gt;<br>
&gt; &gt; &gt; To: &quot;Yair Zaslavsky&quot; &lt;<a href="mailto:yzaslavs@redhat.com">yzaslavs@redhat.com</a>&gt;<br>
&gt; &gt; &gt; Cc: &quot;Koen Vanoppen&quot; &lt;<a href="mailto:vanoppen.koen@gmail.com">vanoppen.koen@gmail.com</a>&gt;, <a href="mailto:users@ovirt.org">users@ovirt.org</a>, &quot;Vojtech<br>
&gt; &gt; &gt; Szocs&quot; &lt;<a href="mailto:vszocs@redhat.com">vszocs@redhat.com</a>&gt;<br>
&gt; &gt; &gt; Sent: Thursday, October 30, 2014 2:10:12 PM<br>
&gt; &gt; &gt; Subject: Re: [ovirt-users] webhook<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Hi<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; CC-ing also Vojtech, the &quot;father&quot; of the UI plugins.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Anyway, the only way to accomplish that via UI plugins at the moment is<br>
&gt; &gt; &gt; via<br>
&gt; &gt; &gt; adding a new &quot;action menu item&quot;, that in the background deleted the VM,<br>
&gt; &gt; &gt; and<br>
&gt; &gt; &gt; reports to Foreman.<br>
&gt; &gt; &gt; I would be nice to have a &quot;hook&quot; for different UI action items, but it<br>
&gt; &gt; &gt; isn&#39;t<br>
&gt; &gt; &gt; available at the moment.<br>
&gt; &gt; &gt; There are plenty code samples for UI plugins, most of them available at:<br>
&gt; &gt; &gt; <a href="http://www.ovirt.org/Features/UIPlugins" target="_blank">http://www.ovirt.org/Features/UIPlugins</a><br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I must say that I&#39;m not sure webhooks are the right approach for that, as<br>
&gt; &gt; &gt; I<br>
&gt; &gt; &gt; guess it is relevant only in environments in which one doesn&#39;t use the<br>
&gt; &gt; &gt; API/CLI/SDK....<br>
&gt; &gt; &gt; but.. it will be a cool feature!<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Regards,<br>
&gt; &gt; &gt; Oved<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; ----- Original Message -----<br>
&gt; &gt; &gt; &gt; From: &quot;Yair Zaslavsky&quot; &lt;<a href="mailto:yzaslavs@redhat.com">yzaslavs@redhat.com</a>&gt;<br>
&gt; &gt; &gt; &gt; To: &quot;Koen Vanoppen&quot; &lt;<a href="mailto:vanoppen.koen@gmail.com">vanoppen.koen@gmail.com</a>&gt;<br>
&gt; &gt; &gt; &gt; Cc: &quot;Oved Ourfali&quot; &lt;<a href="mailto:ovedo@redhat.com">ovedo@redhat.com</a>&gt;, <a href="mailto:users@ovirt.org">users@ovirt.org</a><br>
&gt; &gt; &gt; &gt; Sent: Thursday, October 30, 2014 1:44:38 PM<br>
&gt; &gt; &gt; &gt; Subject: Re: [ovirt-users] webhook<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Oved - can we implement something like this using ui-plugins?<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; ----- Original Message -----<br>
&gt; &gt; &gt; &gt; &gt; From: &quot;Koen Vanoppen&quot; &lt;<a href="mailto:vanoppen.koen@gmail.com">vanoppen.koen@gmail.com</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; To: <a href="mailto:users@ovirt.org">users@ovirt.org</a><br>
&gt; &gt; &gt; &gt; &gt; Sent: Monday, October 27, 2014 4:06:40 PM<br>
&gt; &gt; &gt; &gt; &gt; Subject: [ovirt-users] webhook<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Hi all,<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Just a quick question. Is it possible to set a webhook on the removal<br>
&gt; &gt; &gt; &gt; &gt; and<br>
&gt; &gt; &gt; &gt; &gt; creation of a new vm? So we can send to foreman a delete action when<br>
&gt; &gt; &gt; &gt; &gt; the<br>
&gt; &gt; &gt; &gt; &gt; VM<br>
&gt; &gt; &gt; &gt; &gt; is deleted...<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Kind regards,<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Koen<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; &gt; Users mailing list<br>
&gt; &gt; &gt; &gt; &gt; <a href="mailto:Users@ovirt.org">Users@ovirt.org</a><br>
&gt; &gt; &gt; &gt; &gt; <a href="http://lists.ovirt.org/mailman/listinfo/users" target="_blank">http://lists.ovirt.org/mailman/listinfo/users</a><br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; Users mailing list<br>
&gt; &gt; &gt; &gt; <a href="mailto:Users@ovirt.org">Users@ovirt.org</a><br>
&gt; &gt; &gt; &gt; <a href="http://lists.ovirt.org/mailman/listinfo/users" target="_blank">http://lists.ovirt.org/mailman/listinfo/users</a><br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Users mailing list<br>
&gt; &gt; <a href="mailto:Users@ovirt.org">Users@ovirt.org</a><br>
&gt; &gt; <a href="http://lists.ovirt.org/mailman/listinfo/users" target="_blank">http://lists.ovirt.org/mailman/listinfo/users</a><br>
&gt; &gt;<br>
&gt; _______________________________________________<br>
&gt; Users mailing list<br>
&gt; <a href="mailto:Users@ovirt.org">Users@ovirt.org</a><br>
&gt; <a href="http://lists.ovirt.org/mailman/listinfo/users" target="_blank">http://lists.ovirt.org/mailman/listinfo/users</a><br>
&gt;<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@ovirt.org">Users@ovirt.org</a><br>
<a href="http://lists.ovirt.org/mailman/listinfo/users" target="_blank">http://lists.ovirt.org/mailman/listinfo/users</a><br>
</div></div></blockquote></div><br></div>