<div dir="ltr">I believe in this particular case it will just be doing get_port for the specific ports it is waiting to boot. Not polling every ports status for the lifetime of the port.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 10, 2016 at 11:52 PM, Gary Kotton <span dir="ltr"><<a href="mailto:gkotton@vmware.com" target="_blank">gkotton@vmware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif">
<div>Hi,</div>
<div>If this is a handful of get_port then it is ok. If is is list_ports, where provider network information has to be updated, that is very heavy on the system. Today nova does a ton of polling to Neutron. That sometimes leads to spikes in CPU. In addition
 to this there is the side affect of the log file of Neutron being full and one may miss some critical logs.</div>
<div>Thanks</div>
<div>Gary</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:11pt;text-align:left;color:black;BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;PADDING-BOTTOM:0in;PADDING-LEFT:0in;PADDING-RIGHT:0in;BORDER-TOP:#b5c4df 1pt solid;BORDER-RIGHT:medium none;PADDING-TOP:3pt">
<span style="font-weight:bold">From: </span>Kevin Benton <<a href="mailto:kevin@benton.pub" target="_blank">kevin@benton.pub</a>><br>
<span style="font-weight:bold">Reply-To: </span>OpenStack List <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>
<span style="font-weight:bold">Date: </span>Saturday, June 11, 2016 at 1:13 AM<br>
<span style="font-weight:bold">To: </span>OpenStack List <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><div><div class="h5"><br>
<span style="font-weight:bold">Subject: </span>Re: [openstack-dev] [Kuryr] [Neutron] Waiting until Neutron Port isActive<br>
</div></div></div><div><div class="h5">
<div><br>
</div>
<div>
<div>
<div dir="ltr">Polling should be fine. get_port operations a relatively cheap operation for Neutron.
<div><br>
</div>
<div>Maybe for the future we can have a more pluggable version of the nova callback notifier we have in Neutron like Salvatore pointed out.</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Fri, Jun 10, 2016 at 7:49 AM, Mohammad Banikazemi <span dir="ltr">
<<a href="mailto:mb@us.ibm.com" target="_blank">mb@us.ibm.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<p>Hi Neil,<br>
<br>
Currently, when a docker libnetwork "join" operation in Kuryr is returned, it is not guaranteed that the network connectivity has been established. There are containers that check for network connectivity as the first thing they do when they come up and under
 heavy load some notice there is no connectivity and simply bail out. I am trying to deal with such a use case,<br>
<br>
Thanks for pointing out that option 2 won't work for you. I think Salvatore also alluded to that in his response. What you are suggesting with pinging the container from the appropriate namespace may be worth a try but then there may be containers that do not
 allow ingress traffic while they are up and happy. So short of what Salvatore suggested in his earlier email (and I am not sure if that can be done without additions to Neutron), we are left with option 1.<br>
<br>
Keep in mind that users can choose not to enable the blocking option and things will be as they are right now. Would that be reasonable?<br>
<br>
Best,<br>
<br>
Mohammad<br>
<br>
<img width="16" height="16" src="cid:1__=8FBBF55DDFDD03418f9e8a93df938690918c8FB@" border="0" alt="Inactive hide details for Neil Jerram ---06/10/2016 09:25:59 AM---Hi Mohammad, Why is the blocking needed?  Is it to report som"><font color="#424282">Neil Jerram
 ---06/10/2016 09:25:59 AM---Hi Mohammad, Why is the blocking needed? Is it to report some kind of status back to</font><br>
<br>
<font size="2" color="#5F5F5F">From: </font><font size="2">Neil Jerram <<a href="mailto:neil@tigera.io" target="_blank">neil@tigera.io</a>></font><br>
<font size="2" color="#5F5F5F">To: </font><font size="2">"OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>></font><br>
<font size="2" color="#5F5F5F">Date: </font><font size="2">06/10/2016 09:25 AM</font><span><br>
<font size="2" color="#5F5F5F">Subject: </font><font size="2">Re: [openstack-dev] [Kuryr] [Neutron] Waiting until Neutron Port is Active</font><br>
</span></p>
<hr width="100%" size="2" align="left" noshade style="color:#8091a5">
<br>
<br>
<br>
<div>
<div><font size="4">Hi Mohammad,<br>
</font><br>
<font size="4">Why is the blocking needed?  Is it to report some kind of status back to Docker/Kubernetes, or to allow some follow-on action to happen?<br>
</font><br>
<font size="4">When using networking-calico as the driver, I think that only option (1) would work, out of the options you've suggested below.  (3) doesn't work, as you say, because Calico doesn't involve an L2 agent.  Also Calico doesn't use the RPC message
 queue for reporting port status, because we've found that that message queue is in itself a scalability bottleneck.<br>
</font><br>
<font size="4">I guess another option would be for the using system to determine for itself when the port appears to be working, e.g. by the host pinging the container/pod's IP address.<br>
</font><br>
<font size="4">Regards,</font><br>
<font size="4">    Neil<br>
</font><br>
<br>
<font size="4">On Wed, Jun 8, 2016 at 4:23 PM Mohammad Banikazemi <</font><a href="mailto:mb@us.ibm.com" target="_blank"><u><font size="4" color="#0000FF">mb@us.ibm.com</font></u></a><font size="4">> wrote:</font></div>
</div>
<ul>
<div>
<div><font size="4">For the Kuryr project, in order to support blocking until vifs are plugged in (that is adding config options similar to the following options define in Nova: vif_plugging_is_fatal and vif_plugging_timeout), we need to detect that
 the Neutron plugin being used is done with plugging a given vif.<br>
<br>
Here are a few options:<br>
<br>
1- The simplest approach seems to be polling for the status of the Neutron port to become Active. (This may lead to scalability issues but short of having a specific goal for scalability, it is not clear that will be the case.)<br>
2- Alternatively, We could subscribe to the message queue and wait for such a port update event.
<br>
3- It was also suggested that we could use l2 agent extension to detect such an event but that seems to limit us to certain Neutron plugins and therefore not acceptable.<br>
<br>
I was wondering if there are other and better options. <br>
<br>
Best,<br>
<br>
Mohammad</font><br>
<font size="4">__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: </font><a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank"><u><font size="4" color="#0000FF">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</font></u></a><u><font size="4" color="#0000FF"><br>
</font></u></div>
</div>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank"><u><font size="4" color="#0000FF">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</font></u></a><tt>__________________________________________________________________________<span><br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">
OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
</span></tt><tt><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a></tt><tt><br>
</tt><br>
</ul>
<br>
<p></p>
</div>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">
OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div></div></span>
</div>

<br>__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>