<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi,<br>
<br>
I copy here the answer from Maruti Haridas Kamat (part of the team
which originally designed networking-l2gw) to the question why this
was originally designed this way (no update is possible if there is
an active connection on the gw):<br>
"<br>
<p class="MsoNormal"><span style="color:#1F497D">I understand your
use case, and we thought about it when we were designing the
solution.</span></p>
<p class="MsoNormal"><span style="color:#1F497D"> Consider you
have an interface and a physical switch that is present inside a
neutron logical l2gw, and create a connection, then you have
already created VXLAN-to-VLAN bindings on that interface on the
physical switch or OVS. If you allow a user to update the
gateway to modify the interface or switch list, then we need to
fiddle with the VXLAN-to-VLAN bindings on the switch (es).</span></p>
<p class="MsoNormal"><span style="color:#1F497D"> </span></p>
<p class="MsoNormal"><span style="color:#1F497D">Steps:</span></p>
<ol style="margin-top:0cm" start="1" type="1">
<li class="MsoListParagraph"
style="color:#1F497D;margin-left:0cm;mso-list:l0 level1 lfo2">
The user creates a logical gateway gw1 comprising of switch s1
and interface i1. No validation is performed here.</li>
<li class="MsoListParagraph"
style="color:#1F497D;margin-left:0cm;mso-list:l0 level1 lfo2">
The user creates a connection VXLAN (1000) to physical VLAN
(100) binding. This performs all the validation inside the DB
where the specified switch s1 and interface i1 exist. Whether
the specified binding already exists or not. Finally, the plugin
communicates to the southbound (agent) that creates the binding
1000 <-> 100 on the interface i1 on the switch (OVS).
</li>
<li class="MsoListParagraph"
style="color:#1F497D;margin-left:0cm;mso-list:l0 level1 lfo2">
Consider that the user tries to add another interface i2 now to
the same gateway gw1 using update gw1 command. It does not
perform any validation. The entire validation we do in step 2
has to be moved to this step now. Also, the code (south bound)
that makes changes on the OVS has to be introduced. </li>
<li class="MsoListParagraph"
style="color:#1F497D;margin-left:0cm;mso-list:l0 level1 lfo2">
We avoided this because the user may try to add and remove the
interfaces in one go in the same command. If we had to allow
update connection command, then internally we have to perform
binding of vxlan with vlan for interface i2 but we have to
remove the binding from i1 (considering i1 has been removed from
the gw1) at the same time.</li>
<li class="MsoListParagraph"
style="color:#1F497D;margin-left:0cm;mso-list:l0 level1 lfo2">
It is not that it is not possible, but for the first version of
L2gw in first six months, we thought of supporting basic
framework of all these CLIs/REST APIs and enhance them later.</li>
</ol>
"<br>
It will not give too much extra, but perhaps good to see the
reasoning from another perspective.<br>
<br>
Regards Lajos<br>
<br>
<div class="moz-cite-prefix">On 2017-10-12 01:55, Dayavanti Gopal
Kamath wrote:<br>
</div>
<blockquote type="cite"
cite="mid:HE1PR0701MB2811FD819F83D8BEECD7F83CBF4A0@HE1PR0701MB2811.eurprd07.prod.outlook.com">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
span.hoenzb
{mso-style-name:hoenzb;}
span.EmailStyle21
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1170027444;
mso-list-template-ids:-2003552000;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">Hi
ricardo,<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">Since
the l2gw connection semantics is applied on the l2gw object
as a whole, we could assume any connections applied on the
l2gw object can be retroactively applied to the ports that
are affected by the the l2gw update. so, if a port is added
to an existing l2gw, all existing l2gw connections get
applied on that port, and if a port is deleted from an l2gw,
all existing l2gw connections get removed from this port.
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">daya<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">
Ricardo Noriega De Soto [<a class="moz-txt-link-freetext" href="mailto:rnoriega@redhat.com">mailto:rnoriega@redhat.com</a>]
<br>
<b>Sent:</b> Tuesday, October 10, 2017 6:14 AM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage
questions) <a class="moz-txt-link-rfc2396E" href="mailto:openstack-dev@lists.openstack.org"><openstack-dev@lists.openstack.org></a><br>
<b>Cc:</b> Gary Kotton <a class="moz-txt-link-rfc2396E" href="mailto:gkotton@vmware.com"><gkotton@vmware.com></a>; Ihar
Hrachyshka <a class="moz-txt-link-rfc2396E" href="mailto:ihrachys@redhat.com"><ihrachys@redhat.com></a>; <a class="moz-txt-link-abbreviated" href="mailto:armamig@gmail.com">armamig@gmail.com</a>;
<a class="moz-txt-link-abbreviated" href="mailto:miguel.lavalle@huawei.com">miguel.lavalle@huawei.com</a>; Luis Tomas Bolivar
<a class="moz-txt-link-rfc2396E" href="mailto:ltomasbo@redhat.com"><ltomasbo@redhat.com></a>; <a class="moz-txt-link-abbreviated" href="mailto:maruti.kamat@radisys.com">maruti.kamat@radisys.com</a>; Lajos
Katona <a class="moz-txt-link-rfc2396E" href="mailto:lajos.katona@ericsson.com"><lajos.katona@ericsson.com></a>; Dayavanti Gopal
Kamath <a class="moz-txt-link-rfc2396E" href="mailto:dayavanti.gopal.kamath@ericsson.com"><dayavanti.gopal.kamath@ericsson.com></a>; George
Offord <a class="moz-txt-link-rfc2396E" href="mailto:george.offord@ericsson.com"><george.offord@ericsson.com></a><br>
<b>Subject:</b> Re: [openstack-dev] l2gw<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">I've been
taking a look at the implementation and thinking about
which cases update should be allowed.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">At a
first glance, I would say that we should allow updates:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:47.25pt;text-indent:-.25in;mso-list:l0
level1 lfo2">
<!--[if !supportLists]--><span
style="font-size:10.0pt;font-family:Symbol"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><span
style="font-size:9.5pt">Add a new interface (neutron
l2-gateway-update gw1 --device
name=hwvtep,interface_names=eth0,<b>eth1</b>) being eth1
the new interface.<o:p></o:p></span></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:47.25pt;text-indent:-.25in;mso-list:l0
level1 lfo2">
<!--[if !supportLists]--><span
style="font-size:10.0pt;font-family:Symbol"><span
style="mso-list:Ignore">·<span style="font:7.0pt
"Times New Roman"">
</span></span></span><!--[endif]--><span
style="font-size:9.5pt">Delete interface (neutron
l2-gateway-update gw1 --device
name=hwvtep,interface_names=eth0) removing eth1. In this
case, we should check that the port has not any active
connection.<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">However,
in both cases there is a big issue, which is the
granularity of the segmentation-ids per port, right??
You cannot add or remove an l2gw connection per port,
which bring us to a dead end.<o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">Let's say
I add eth1 to an existing l2gw. How can I get a vlan tag
to that interface?? There is not l2gw-connection-update
command... and trying to create the same one will fail.
Even if you try to update the l2gw instance specifying
the seg-id per port, it won't be active until a new
connection is created.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">Folks,
based on your experience, what's your take on this??<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">IMHO,
there is no easy way of solving this but with a big
re-architecture.<o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Fri, Sep 29, 2017 at 1:46 PM, Lajos
Katona <<a href="mailto:lajos.katona@ericsson.com"
target="_blank" moz-do-not-send="true">lajos.katona@ericsson.com</a>>
wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC
1.0pt;padding:0in 0in 0in
6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">Hi Ricardo,<br>
<br>
That is the exception which gives us the trouble.<br>
<br>
If you have ideas as you mentioned in which case a gw
should be updated, and in what not, that would be
really nice.<br>
Actually now we have a kind of development environment
with devstack and vtep emulator (<a
href="http://docs.openvswitch.org/en/latest/howto/vtep/"
target="_blank" moz-do-not-send="true">http://docs.openvswitch.org/en/latest/howto/vtep/</a>)
on the same host, what do you think is that enough to
go on with this problem?<br>
I am not so sure if with vtep emulator we can cover
all the good and bad (I mean when we mustn't do the
update for example) scenarios.<br>
<br>
Regards<span style="color:#888888"><br>
<span class="hoenzb">Lajos</span></span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 2017-09-28 14:12, Ricardo
Noriega De Soto wrote:<o:p></o:p></p>
</div>
<blockquote
style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">I see the exception now
Lajos: <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">class
L2GatewayInUse(exceptions.InUse):<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> message = _("L2
Gateway '%(gateway_id)s' still has active
mappings "<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> "with
one or more neutron networks.")<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">:-)<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Sep 27, 2017 at
6:40 PM, Ricardo Noriega De Soto <<a
href="mailto:rnoriega@redhat.com"
target="_blank" moz-do-not-send="true">rnoriega@redhat.com</a>>
wrote:<o:p></o:p></p>
<blockquote
style="border:none;border-left:solid #CCCCCC
1.0pt;padding:0in 0in 0in
6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">Hey Lajos, <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Is this the
exception you are encountering?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">(neutron)
l2-gateway-update --device
name=hwvtep,interface_names=eth0,eth1
gw1<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">L2 Gateway
'b8ef7f98-e901-4ef5-b159-df53364ca996'
still has active mappings with one
or more neutron networks.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Neutron server
returns request_ids:
['req-f231dc53-cb7d-4221-ab74-fa8715f85869']<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I don't see the
L2GatewayInUse exception you're
talking about, but I guess it's the
same situation.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">We should discuss
in which case the l2gw instance could
be updated, and in which cases it
shouldn't.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Please, let me
know!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Aug 16,
2017 at 11:14 AM, Lajos Katona
<<a
href="mailto:lajos.katona@ericsson.com"
target="_blank"
moz-do-not-send="true">lajos.katona@ericsson.com</a>>
wrote:<o:p></o:p></p>
<blockquote
style="border:none;border-left:solid
#CCCCCC 1.0pt;padding:0in 0in 0in
6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p class="MsoNormal">Hi,<br>
<br>
We faced an issue with
l2-gw-update, which means that
actually if there are
connections for a gw the update
will throw an exception
(L2GatewayInUse), and the update
is only possible after deleting
first the connections, do the
update and add the connections
back.<br>
<br>
It is not exactly clear why this
restriction is there in the code
(at least I can't find it in
docs or comments in the code, or
review).<br>
As I see the check for network
connections was introduced in
this patch:<br>
<a
href="https://review.openstack.org/#/c/144097"
target="_blank"
moz-do-not-send="true">https://review.openstack.org/#/c/144097</a>
(<a
href="https://review.openstack.org/#/c/144097/21..22/networking_l2gw/db/l2gateway/l2gateway_db.py"
target="_blank"
moz-do-not-send="true">https://review.openstack.org/#/c/144097/21..22/networking_l2gw/db/l2gateway/l2gateway_db.py</a>)<br>
<br>
Could you please give me a
little background why the update
operation is not allowed on an
l2gw with network connections?<br>
<br>
Thanks in advance for the help.<br>
<br>
Regards<br>
Lajos<br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing
List (not for usage questions)<br>
Unsubscribe: <a
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
target="_blank"
moz-do-not-send="true">
OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a
href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
target="_blank"
moz-do-not-send="true">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Ricardo
Noriega<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Senior <span
style="font-size:9.5pt">Software
Engineer - NFV Partner
Engineer | Office of
Technology | Red Hat</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt">irc:
rnoriega @freenode</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Ricardo Noriega<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Senior <span
style="font-size:9.5pt">Software
Engineer - NFV Partner Engineer |
Office of Technology | Red Hat</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:9.5pt">irc:
rnoriega @freenode</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<pre>__________________________________________________________________________<o:p></o:p></pre>
<pre>OpenStack Development Mailing List (not for usage questions)<o:p></o:p></pre>
<pre>Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank" moz-do-not-send="true">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><o:p></o:p></pre>
<pre><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank" moz-do-not-send="true">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage
questions)<br>
Unsubscribe: <a
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
target="_blank" moz-do-not-send="true">
OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a
href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
target="_blank" moz-do-not-send="true">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Ricardo Noriega<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Senior <span
style="font-size:9.5pt">Software Engineer - NFV
Partner Engineer | Office of Technology | Red
Hat</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">irc:
rnoriega @freenode</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
</body>
</html>