<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>