<div dir="ltr">Dan, your arguments conviced me,<div>changing my vote to &quot;request&quot; only.</div></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr"><div>---</div><div>irc: ajo / mangelajo</div>Miguel Angel Ajo Pelayo<br>
+34 636 52 25 69<br>skype: ajoajoajo</div></div>
<br><br><div class="gmail_quote">2014/1/9 Antoni Segura Puimedon <span dir="ltr">&lt;<a href="mailto:asegurap@redhat.com" target="_blank">asegurap@redhat.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
<br>
----- Original Message -----<br>
&gt; From: &quot;Dan Kenigsberg&quot; &lt;<a href="mailto:danken@redhat.com">danken@redhat.com</a>&gt;<br>
&gt; To: &quot;Miguel Angel&quot; &lt;<a href="mailto:miguelangel@ajo.es">miguelangel@ajo.es</a>&gt;<br>
&gt; Cc: <a href="mailto:dsulliva@redhat.com">dsulliva@redhat.com</a>, <a href="mailto:arch@ovirt.org">arch@ovirt.org</a>, <a href="mailto:vdsm-devel@fedorahosted.org">vdsm-devel@fedorahosted.org</a><br>
</div><div class="im">&gt; Sent: Thursday, January 9, 2014 2:35:40 AM<br>
&gt; Subject: Re: [vdsm] Smarter network_setup hooks<br>
&gt;<br>
</div><div><div class="h5">&gt; On Wed, Jan 08, 2014 at 03:34:24PM +0100, Miguel Angel wrote:<br>
&gt; &gt; Hi Assaf, Thank you very much for the summary,<br>
&gt; &gt;<br>
&gt; &gt; Just a few questions, there are things I don&#39;t understand yet:<br>
&gt; &gt;<br>
&gt; &gt; 2014/1/8 Assaf Muller &lt;<a href="mailto:amuller@redhat.com">amuller@redhat.com</a>&gt;<br>
&gt; &gt;<br>
&gt; &gt; &gt; Mid-thread summary:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; First some terminology so we&#39;re all on the same page:<br>
&gt; &gt; &gt; &#39;request&#39; - The setupNetworks that just arrived<br>
&gt; &gt; &gt; &#39;running config&#39; - If unified persistence is being used - All networking<br>
&gt; &gt; &gt; on the host as VDSM sees it<br>
&gt; &gt; &gt; &#39;expected&#39; - If unified persistence is being used - The running config<br>
&gt; &gt; &gt; after the effects of the request, but before the hook is ran<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; correct<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; &gt; I think we all agree that we have to expose the &#39;request&#39; to the hook.<br>
&gt; &gt; &gt; However, there&#39;s two different approaches:<br>
&gt; &gt; &gt; 1) Allow the hook to rewrite parts of the request (For example, if two<br>
&gt; &gt; &gt; networks were sent, and the hook handled one of them, it could<br>
&gt; &gt; &gt;    then delete that network from the request, so VDSM will only continue<br>
&gt; &gt; &gt; to configure the 2nd network).<br>
&gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; In this case ,if the hook deleted the &quot;2nd network&quot;, VDSM couldn&#39;t handle<br>
&gt; &gt; the network config persistence anymore, right?,<br>
&gt;<br>
&gt; Right. If the before_network_setup hook decides to drop an item from the<br>
&gt; &#39;request&#39;, it means that neither following hooks, nor Vdsm proper, would<br>
&gt; see it. I find it as a useful and simple sematics: the hook practically<br>
&gt; says &quot;I&#39;m taking it from here&quot;, and from then on, it is repsonsible for<br>
&gt; everything. Implementation and persistence alike.<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; I didn&#39;t expect this use case, I only expected tweaks, etc (before or after<br>
&gt; &gt; network setup), for example, setting special hardware<br>
&gt; &gt; capabilities using ethtool or those kind of things.<br>
&gt;<br>
&gt; Neither have I expected this. But it&#39;s a powerful tool that&#39;s relatively<br>
&gt; easy to implement.<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; &gt; 2) Toni&#39;s idea with marking devices as hook-configured. So if a network<br>
&gt; &gt; &gt; is<br>
&gt; &gt; &gt; over a bridge over a VLAN over a bond over three NICs, hooks<br>
&gt; &gt; &gt;    could configure only the NICs (For example) and VDSM would configure<br>
&gt; &gt; &gt; the rest, whereas the first idea means that the hook would<br>
&gt; &gt; &gt;    have to configure the entire network (Bridge, VLANs, bonds, and all 3<br>
&gt; &gt; &gt; NICs) and then remove that network from the request.<br>
&gt; &gt; &gt;    The disadvantage of this method is that it would be harder to<br>
&gt; &gt; &gt; implement, and have references to the hooks flag throughout all of VDSM.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; You mean that if the hook marked a certain device as &quot;hook handled&quot; then,<br>
&gt; &gt; VDSM would just keep this information along with<br>
&gt; &gt; the network config, etc... and won&#39;t do any setup, just config-keeping,<br>
&gt; &gt; right?<br>
&gt;<br>
&gt; That&#39;s my understanding, too. And I share the feeling that this is error<br>
&gt; prone: Vdsm sees the config, but must remember that it should not touch<br>
&gt; it or act upon it.<br>
&gt;<br>
&gt; &gt; &gt; Then there&#39;s the matter of IF to expose the &#39;running config&#39; and<br>
&gt; &gt; &gt; &#39;expected&#39;.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; My main argument is that it&#39;s very easy to expose to the hooks (But then<br>
&gt; &gt; &gt; why not expose other &#39;random&#39; data that is easy for VDSM to calculate?),<br>
&gt; &gt; &gt; and that we don&#39;t understand all usages for the setupNetworks hooks. I&#39;d<br>
&gt; &gt; &gt; rather we expose too much information than not enough and screw<br>
&gt; &gt; &gt; over hook writers.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; We have something important here, the hooks don&#39;t need to be<br>
&gt; &gt; python-written, they could be bash scripts, or any other thing...<br>
&gt; &gt; that means that they wouldn&#39;t have access to get &quot;running config&quot;, but they<br>
&gt; &gt; could calculate &quot;expected&quot;.<br>
&gt; &gt;<br>
&gt; &gt; So, my vote here goes for &quot;request&quot; + &quot;running config&quot;.<br>
&gt; &gt;<br>
&gt;<br>
&gt; The &quot;running config&quot; is accessible to any process, albeit not in its<br>
&gt; Vdsm representation. All the information is available if you do `ip a`<br>
&gt; and `virsh net-list`.<br>
&gt;<br>
&gt; I do not imagine why a hook would need the &quot;running config&quot;; If it does<br>
&gt; end up needing it, it could re-calculate it just as Vdsm does. Passing<br>
&gt; this as argument to each hook script is a premature optimization imho.<br>
&gt;<br>
&gt; If I end up wrong, it would not be hard to add the &quot;running config&quot; to<br>
&gt; the Vdsm/hook API. Removing something from an API is a much harder<br>
&gt; task.<br>
&gt;<br>
&gt; My vote goes to only &quot;request&quot;.<br>
<br>
</div></div>Only &quot;request&quot; for me too.<br>
<div class="im HOEnZb">&gt;<br>
&gt; &gt;<br>
&gt; &gt; &gt; Either way, let&#39;s get some votes in a timely manner so we could manage to<br>
&gt; &gt; &gt; implement this for 3.4.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; Thanks Assaf! ;)<br>
</div><div class="HOEnZb"><div class="h5">&gt; _______________________________________________<br>
&gt; vdsm-devel mailing list<br>
&gt; <a href="mailto:vdsm-devel@lists.fedorahosted.org">vdsm-devel@lists.fedorahosted.org</a><br>
&gt; <a href="https://lists.fedorahosted.org/mailman/listinfo/vdsm-devel" target="_blank">https://lists.fedorahosted.org/mailman/listinfo/vdsm-devel</a><br>
&gt;<br>
</div></div></blockquote></div><br></div>