<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
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;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:Calibri;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">Thanks Devananda and Dmitry and Sam!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">From my point of view, I wanted to make sure that:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">1. we agreed on  whether the 'network_interface' was, or was not, an interface that was similar to the existing power, deploy, ... interfaces so that it fit into the driver composition
 work <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">2. we agreed on having or not having the default_network_interface configuration option, and whether/how it fit into the driver composition work.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">I think, because I haven't heard anyone disagree (yet), that the network_interface fits into the driver composition work and that we want the configuration option. It looks like we are
 trying to figure out *how* it fits into the driver composition work and hardware_types. To that end, I thought I'd put up a patch [1] that I hope captures everyone's suggestions. Maybe we can move to that patch to comment.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">As far as the multi-tenant networking patches [2] go, as long as we're good with the above, I think we're good to continue. The details wrt how the network_interface and default configuration
 option is integrated with hardware_types can be worked out.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">If you think otherwise, please let me know :)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">--ruby<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">[1] <a href="https://review.openstack.org/#/c/341084/">
https://review.openstack.org/#/c/341084/</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">[2] <a href="https://review.openstack.org/#/c/285852/">
https://review.openstack.org/#/c/285852/</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<div>
<div>
<p class="MsoNormal">On 2016-07-12, 8:02 AM, "Dmitry Tantsur" <<a href="mailto:dtantsur@redhat.com">dtantsur@redhat.com</a>> wrote:<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div>
<div>
<p class="MsoNormal">Thanks for writing this up, minor comments inline.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">On 07/11/2016 10:57 PM, Devananda van der Veen wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal">We spent the majority of today's weekly IRC meeting [1] discussing the finer<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">points of this question. I agreed to post a summary of those to the list (it's<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">below the break).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">tldr;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">* we don't know if network_interface should behave like other hardware<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">interfaces, but...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* we need to come to an agreement on it this week, so we can proceed with the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">network integration work.<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>
</blockquote>
<div>
<p class="MsoNormal"><snip><o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">There was a proposal from sambetts towards the end of the meeting, which I've<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">edited for clarity (please correct if I misunderstood any of your points). This<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">seems to capture/address most of the points above and proposes a way forward,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">while keeping within the intent of our driver composition reform spec. It was<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">the only clear suggestion during the meeting.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">- in-tree hardware_types declare supported_network_interfaces to be empty [4]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">and declare no default_network_interface<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">We need supported_network_interfaces, otherwise you won't be able to
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">check compatibility. I think we should introduce a constant to use like
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">that:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">  class MyHwType:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    supported_network_interfaces = ironic.network.ALL_INTERFACES<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal">- we add a CONF option for default_network_interface, with a sane default value<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- this CONF option is validated on conductor load to be supported by all loaded<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">hardware_types, and the conductor refuses to start if this CONF option is set to<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">a value not supported by one or more enabled_hardware_types<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">How do we distinguish between interfaces which have a default and which
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">don't? For example, I can see a use case for having defaults for deploy
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">and inspect (the latter would be used by tripleo for sure).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal">- if a(n out of tree) hardware_type declares a default_network_interface, this<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">will take precedence over the CONF option<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- a node created without specifying a network interface will check the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">hardware_type's supported_network_interfaces, and when that is empty, fall back<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">s/supported/default/ here?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal">to the CONF.default_network_interface, just as other interfaces fall back to the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">hardware_type's relevant default<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- operators can override a specific node's network_interface, which follows the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">usual rules for setting an interface on a Node (ie, the interface must be in<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">hardware_type.supported_network_interfaces AND in CONF.enabled_network_interfaces)<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>
<p class="MsoNormal">If anyone else has other clear suggestions that address all the issues here,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">please reply with them.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I'm going to make myself available tomorrow at 1700 UTC, in both IRC and by<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">voice [3] (conference line # TBD) to discuss this with anyone. If we need to<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">discuss it again on Wednesday, we can.<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>
<p class="MsoNormal">Thanks much,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">--devananda<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>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">[1] starting at 17:20<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="http://eavesdrop.openstack.org/meetings/ironic/2016/ironic.2016-07-11-17.00.log.html">http://eavesdrop.openstack.org/meetings/ironic/2016/ironic.2016-07-11-17.00.log.html</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">[2]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="http://specs.openstack.org/openstack/ironic-specs/specs/approved/driver-composition-reform.html">http://specs.openstack.org/openstack/ironic-specs/specs/approved/driver-composition-reform.html</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">[3] <a href="https://wiki.openstack.org/wiki/Infrastructure/Conferencing">
https://wiki.openstack.org/wiki/Infrastructure/Conferencing</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">[4] I think we may need to have in-tree drivers declare<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">supported_network_interfaces to be [noop, flat, neutron], but that is not what<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Sam suggested during the meeting<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>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">On 06/28/2016 08:32 AM, Dmitry Tantsur wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0cm 0cm 0cm 4.0pt;margin-left:3.75pt;margin-right:0cm" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal">Hi folks!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I was reviewing <a href="https://review.openstack.org/317391">
https://review.openstack.org/317391</a> and realized I don't quite<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">understand why we want to have node.network_interface. What's the real life use<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">case for it?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Do we expect some nodes to use Neutron, some - not?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Do we expect some nodes to benefit from network separation, some - not? There<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">may be a use case here, but then we have to expose this field to Nova for<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">scheduling, so that users can request a "secure" node or a "less secure" one. If<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">we don't do that, Nova will pick at random, which makes the use case unclear again.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">If we do that, the whole work goes substantially beyond what we were trying to<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">do initially: isolate tenants from the provisioning network and from each other.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Flexibility it good, but the patches raise upgrade concerns, because it's<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">unclear how to provide a good default for the new field. And anyway it makes the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">whole thing much more complex than it could be.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Any hints are welcome.<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>
<p class="MsoNormal">OpenStack Development Mailing List (not for usage questions)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org">
OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><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>
<p class="MsoNormal">__________________________________________________________________________<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">OpenStack Development Mailing List (not for usage questions)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org">
OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><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>
<p class="MsoNormal">OpenStack Development Mailing List (not for usage questions)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org">
OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>