<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi folks,<div class=""><br class=""></div><div class="">I had a deep dive session with Bob (thx Bob).</div><div class=""><br class=""></div><div class="">We have a plan to solve the issue without any change of APIs or </div><div class="">manila driver reworks.</div><div class=""><br class=""></div><div class="">The process will look like the following:</div><div class=""><br class=""></div><div class="">1.) In case of multi-segment/hpb Manila creates a port like Ironic ML2</div><div class="">    would do it [1]:</div><div class="">      vif_type = baremetal</div><div class="">      binding_profile = list of sw ports</div><div class="">      device_owner = manila:ID</div><div class=""><br class=""></div><div class="">2.) Manila waits until all ports are actively bound</div><div class="">2.a) Neutron binds the port through the segments</div><div class="">2.b) A manila-neutron mech driver (a really simple one) fulfils the binding</div><div class="">       and sets:</div><div style="widows: 1;" class="">     <span style="color: rgb(83, 83, 83); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; widows: 1; background-color: rgb(249, 249, 249);" class="">vif_details</span><span style="widows: 1; background-color: rgb(249, 249, 249);" class=""><font color="#535353" face="Helvetica Neue, Helvetica, Arial, sans-serif" class=""> = {“share_segmentation_id" = XX,</font></span></div><div style="widows: 1;" class=""><span style="widows: 1; background-color: rgb(249, 249, 249);" class=""><font color="#535353" face="Helvetica Neue, Helvetica, Arial, sans-serif" class="">                           “share_</font></span><span style="color: rgb(83, 83, 83); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; widows: 1; background-color: rgb(249, 249, 249);" class="">network_type"</span><span style="color: rgb(83, 83, 83); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; widows: 1; background-color: rgb(249, 249, 249);" class=""> = YY}</span></div><div style="widows: 1;" class=""><span style="color: rgb(83, 83, 83); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: rgb(249, 249, 249);" class=""><br class=""></span></div><div style="widows: 1;" class=""><span style="color: rgb(83, 83, 83); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: rgb(249, 249, 249);" class="">3.) When the port becomes active Manila has all it needs to proceed</span></div><div style="widows: 1;" class=""><br class=""></div><div style="widows: 1;" class="">In 2.b. the manila MD will only search for device_owner == “manila:”,</div><div style="widows: 1;" class="">sets the needed details and fulfils the binding (~10 LOC).</div><div style="widows: 1;" class=""><br class=""></div><div style="widows: 1;" class="">We also discussed about using ML2 GW [2] or trunk port [3].</div><div style="widows: 1;" class="">I consider the design above as simple enough to get merged smoothly</div><div style="widows: 1;" class="">in Newton.</div><div style="widows: 1;" class=""><br class=""></div><div style="widows: 1;" class="">@Ben: Will be back for bug hunting now.</div><div style="widows: 1;" class=""><br class=""></div><div style="widows: 1;" class="">Regards</div><div style="widows: 1;" class="">Marc</div><div style="widows: 1;" class=""><br class=""></div><div style="widows: 1;" class="">[1]: <a href="https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/ironic-ml2-integration.html" class="">https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/ironic-ml2-integration.html</a></div><div style="widows: 1;" class="">[2]: <a href="https://wiki.openstack.org/wiki/Neutron/L2-GW" class="">https://wiki.openstack.org/wiki/Neutron/L2-GW</a></div><div style="widows: 1;" class="">[3]: <a href="https://wiki.openstack.org/wiki/Neutron/TrunkPort" class="">https://wiki.openstack.org/wiki/Neutron/TrunkPort</a></div><div style="widows: 1;" class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 09 Mar 2016, at 09:25, Koderer, Marc <<a href="mailto:marc@koderer.com" class="">marc@koderer.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" class=""><div class=""><br class="Apple-interchange-newline">On 09 Mar 2016, at 08:43, Sukhdev Kapur <<a href="mailto:sukhdevkapur@gmail.com" class="">sukhdevkapur@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi Marc, <div class=""><br class=""></div><div class="">I am driving the ironic-ml2 integration and introduced baremetal type for vmic_type. </div></div></div></blockquote><div class=""><br class=""></div><div class="">Basically that’s my plan. So in my current implementation</div><div class="">I use the baremetal vnic_type [1] and add a binding profile [2].</div><div class=""><br class=""></div><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="">You can very much use the same integration here - however, I am not completely clear about your use case. </div><div class="">Do you want neutron/ML2 to plumb the network for Manila or do you want to find out what VLAN (segmentation id) is used on the segment which connects TOR to the storage device? </div></div></div></blockquote><div class=""><br class=""></div><div class=""><div class="">Generally I want to find the best architecture for this feature :)</div><div class="">Introducing a neutron-agent that does the plumbing will mean this agent needs</div><div class="">to have a connection to the storage node itself. So we will end-up in a</div><div class="">storage agent with a driver model (or an agent for each storage device). On</div><div class="">the other side it follows the idea that neutron takes care about networking.</div><div class=""><br class=""></div><div class="">From a Manila perspective the easiest solution would be to have an interface to</div><div class="">get the segmentation id of the lowest bound segment.</div></div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">You had this on the agenda of ML2 meeting for tomorrow and I was going to discuss this with you in the meeting. But, I noticed that you removed it from the agenda. Do you have what you need? If not, you may want to join us in the ML2 meeting tomorrow and we can discuss this use case there. </div></div></div></blockquote><div class=""><br class=""></div><div class="">Yeah I am sorry - I have to move the topic +1 week due to an internal meeting :(</div><div class="">But we can have a chat on IRC (mkoderer on freenode).</div><div class=""><br class=""></div><div class="">Regards</div><div class="">Marc</div><div class=""><br class=""></div><div class="">[1]: <a href="https://review.openstack.org/#/c/283494/" class="">https://review.openstack.org/#/c/283494/</a></div><div class="">[2]: <a href="https://review.openstack.org/#/c/284034/" class="">https://review.openstack.org/#/c/284034/</a></div><div class=""><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">-Sukhdev</div><div class=""><br class=""></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Tue, Mar 1, 2016 at 1:08 AM, Koderer, Marc<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:marc@koderer.com" target="_blank" class="">marc@koderer.com</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div class="" style="word-wrap: break-word;"><br class=""><div class=""><span class=""><blockquote type="cite" class=""><div class="">On 01 Mar 2016, at 06:22, Kevin Benton <<a href="mailto:kevin@benton.pub" target="_blank" class="">kevin@benton.pub</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class="">><span class="" style="font-size: 12.8px;">This seems gross and backwards. It makes sense as a short term hack but given that we have time to design this correctly I'd prefer to get this information in a more straighforward way.</span><div class=""><span class="" style="font-size: 12.8px;"><br class=""></span></div><div class=""><span class="" style="font-size: 12.8px;">Well it depends on what is happening here. If Manilla is wiring up a specific VLAN for a port, that makes it part of the port binding process, in which case it should be an ML2 driver. Can you provide some more details about what Manilla is doing with this info?</span></div></div></div></blockquote><div class=""><br class=""></div></span><div class=""><div class="">The VLAN segment ID and IP address is used in the share driver to configure the</div><div class="">corresponding interface resources within the storage. Just to give some</div><div class="">examples:</div><div class=""><br class=""></div><div class=""> - NetApp driver uses it to create a logical interface and assign it to a</div><div class="">   “storage virtual machine” [1]</div><div class=""> - EMC driver does it in similar manner [2]</div><div class=""><br class=""></div><div class="">My idea was to use the same principle as ironic ml2 intregration is doing [3]</div><div class="">by setting the vnic_type to “baremetal”.</div><div class=""><br class=""></div><div class="">In Manila's current implementation storage drivers are also responsible to</div><div class="">setup the right networking setup. Would you suggest to move this part into the</div><div class="">port binding phase?</div><div class=""><br class=""></div><div class="">Regards</div><div class="">Marc</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">[1]: <a href="https://github.com/openstack/manila/blob/master/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py#L272" target="_blank" class="">https://github.com/openstack/manila/blob/master/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py#L272</a></div><div class="">[2]: <a href="https://github.com/openstack/manila/blob/master/manila/share/drivers/emc/plugins/vnx/connection.py#L609" target="_blank" class="">https://github.com/openstack/manila/blob/master/manila/share/drivers/emc/plugins/vnx/connection.py#L609</a></div><div class="">[3]: <a href="https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/ironic-ml2-integration.html" target="_blank" class="">https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/ironic-ml2-integration.html</a></div><div class=""><div class="h5"><div class=""><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Mon, Feb 29, 2016 at 5:29 PM, Ben Swartzlander<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:ben@swartzlander.org" target="_blank" class="">ben@swartzlander.org</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><span class="">On 02/29/2016 04:38 PM, Kevin Benton wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">You're correct. Right now there is no way via the HTTP API to find which<br class="">segments a port is bound to.<br class="">This is something we can certainly consider adding, but it will need an<br class="">RFE so it wouldn't land until Newton at the earliest.<br class=""></blockquote><br class=""></span>I believe Newton is the target for this work. This is feature freeze week after all.<span class=""><br class=""><br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">Have you considered writing an ML2 driver that just notifies Manilla of<br class="">the port's segment info? All of this information is available to ML2<br class="">drivers in the PortContext object that is passed to them.<br class=""></blockquote><br class=""></span>This seems gross and backwards. It makes sense as a short term hack but given that we have time to design this correctly I'd prefer to get this information in a more straighforward way.<br class=""><br class="">-Ben Swartzlander<br class=""><br class=""><br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><span class="">On Mon, Feb 29, 2016 at 6:48 AM, Ihar Hrachyshka <<a href="mailto:ihrachys@redhat.com" target="_blank" class="">ihrachys@redhat.com</a><br class=""></span><span class=""><mailto:<a href="mailto:ihrachys@redhat.com" target="_blank" class="">ihrachys@redhat.com</a>>> wrote:<br class=""><br class="">    Fixed neutron tag in the subject.<br class=""><br class=""></span><div class=""><div class="">    Marc <<a href="mailto:marc@koderer.com" target="_blank" class="">marc@koderer.com</a><span class="Apple-converted-space"> </span><mailto:<a href="mailto:marc@koderer.com" target="_blank" class="">marc@koderer.com</a>>> wrote:<br class=""><br class="">        Hi Neutron team,<br class=""><br class="">        I am currently working on a feature for hierarchical port<br class="">        binding support in<br class="">        Manila [1] [2]. Just to give some context: In the current<br class="">        implementation Manila<br class="">        creates a neutron port but let it unbound (state DOWN).<br class="">        Therefore Manila uses<br class="">        the port create only retrieve an IP address and segmentation ID<br class="">        (some drivers<br class="">        only support VLAN here).<br class=""><br class="">        My idea is to change this behavior and do an actual port binding<br class="">        action so that<br class="">        the configuration of VLAN isn’t a manual job any longer. And<br class="">        that multi-segment<br class="">        and HPB is supported on the long-run.<br class=""><br class="">        My current issue is: How can Manila retrieve the segment<br class="">        information for a<br class="">        bound port? Manila only is interested in the last (bottom)<br class="">        segmentation ID<br class="">        since I assume the storage is connected to a ToR switch.<br class=""><br class="">        Database-wise it’s possible to query it using<br class="">        ml2_port_binding_levels table.<br class="">        But AFAIK there is no API to query this. The only information<br class="">        that is exposed<br class="">        are all segments of a network. But this is not sufficient to<br class="">        identify which<br class="">        segments actually used for a port binding.<br class=""><br class="">        Regards<br class="">        Marc<br class="">        SAP SE<br class=""><br class="">        [1]:<br class="">       <span class="Apple-converted-space"> </span><a href="https://wiki.openstack.org/wiki/Manila/design/manila-newton-hpb-support" rel="noreferrer" target="_blank" class="">https://wiki.openstack.org/wiki/Manila/design/manila-newton-hpb-support</a><br class="">        [2]:<span class="Apple-converted-space"> </span><a href="https://review.openstack.org/#/c/277731/" rel="noreferrer" target="_blank" class="">https://review.openstack.org/#/c/277731/</a><br class="">        __________________________________________________________________________<br class="">        OpenStack Development Mailing List (not for usage questions)<br class="">        Unsubscribe:<br class="">       <span class="Apple-converted-space"> </span><a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" rel="noreferrer" target="_blank" class="">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br class=""></div></div>        <<a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" rel="noreferrer" target="_blank" class="">http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a>><span class=""><br class="">       <span class="Apple-converted-space"> </span><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class=""><br class=""><br class=""><br class="">    __________________________________________________________________________<br class="">    OpenStack Development Mailing List (not for usage questions)<br class="">    Unsubscribe:<br class="">   <span class="Apple-converted-space"> </span><a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" rel="noreferrer" target="_blank" class="">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br class=""></span>    <<a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" rel="noreferrer" target="_blank" class="">http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a>><span class=""><br class="">   <span class="Apple-converted-space"> </span><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class=""><br class=""><br class=""><br class=""><br class="">__________________________________________________________________________<br class="">OpenStack Development Mailing List (not for usage questions)<br class="">Unsubscribe:<span class="Apple-converted-space"> </span><a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" rel="noreferrer" target="_blank" class="">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br class=""><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class=""><br class=""></span></blockquote><div class=""><div class=""><br class=""><br class="">__________________________________________________________________________<br class="">OpenStack Development Mailing List (not for usage questions)<br class="">Unsubscribe:<span class="Apple-converted-space"> </span><a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" rel="noreferrer" target="_blank" class="">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br class=""><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class=""></div></div></blockquote></div><br class=""></div>__________________________________________________________________________<br class="">OpenStack Development Mailing List (not for usage questions)<br class="">Unsubscribe:<span class="Apple-converted-space"> </span><a href="mailto:OpenStack-dev-request@lists.openstack.org" target="_blank" class="">OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe<br class=""><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class=""></div></blockquote></div></div></div><br class=""></div><br class="">__________________________________________________________________________<br class="">OpenStack Development Mailing List (not for usage questions)<br class="">Unsubscribe:<span class="Apple-converted-space"> </span><a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" rel="noreferrer" target="_blank" class="">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br class=""><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class=""><br class=""></blockquote></div><br class=""></div>__________________________________________________________________________<br class="">OpenStack Development Mailing List (not for usage questions)<br class="">Unsubscribe:<span class="Apple-converted-space"> </span><a href="mailto:OpenStack-dev-request@lists.openstack.org" class="">OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe<br class=""><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class=""></div></blockquote></div><br class="" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">__________________________________________________________________________</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">OpenStack Development Mailing List (not for usage questions)</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Unsubscribe:<span class="Apple-converted-space"> </span></span><a href="mailto:OpenStack-dev-request@lists.openstack.org" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">OpenStack-dev-request@lists.openstack.org</a><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">?subject:unsubscribe</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a></div></blockquote></div><br class=""></div></body></html>