<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (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:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-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;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></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]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Hi,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>I would like to request clarity on the semantics of the "attach resource to port" operation proposed in Quantum in the context of spawning a VM. Let's discuss this with respect to a specific example. As of today, nova-compute generates the domain configuration (libvirt.xml), including the network interface configuration as below -<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>        <interface type='bridge'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>            <source bridge='br100'/><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>            <mac address='02:16:3e:78:4d:84'/><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>            <!--   <model type='virtio'/>  CANT RUN virtio network right now --><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>            <filterref filter="nova-instance-instance-00000001"><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>                <parameter name="IP" value="10.1.0.2" /><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>                <parameter name="DHCPSERVER" value="10.1.0.1" /><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>                <parameter name="PROJNET" value="10.1.0.0" /><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>                <parameter name="PROJMASK" value="255.255.255.128" /><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>            </filterref><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>        </interface><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>By virtue of specifying "br100" as the bridge to connect to, nova-compute is configuring the attachment from the virtual NIC (on the VM) to the network, and the "attachment" operation is (implicitly) realized when the VM is spawned (and running).<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>With the introduction of the "attach resource to port" operation, we are introducing an explicit step in the process of the VM spawning. It implies that prior to invoking the "attach resource to port" operation, nova-compute would not know which bridge to connect to (i.e. it would not know the identity of "br100"). So does nova-compute first spawn the VM without the network interface configuration? If that is the case, it brings us to the next question, which is, what does the "attach resource to port" operation actually do? There are at least two possibilities here -<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>(1) The operation merely results in the identification (and, if required, the configuration) of "br100" as the bridge to connect the VM's network interface to. If that is the case, we need a way to propagate this information (i.e. "br100") back to the entity which invoked the "attach resource to port" operation. Subsequently, that same entity will have to perform another action to craft the VM's network interface configuration (with the acquired knowledge of "br100") and also add this network interface to the configuration of the VM (by making appropriate libvirt calls). Adding this network interface configuration could be done, both, prior to starting the VM, or even while the VM is running.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>OR <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>(2) The operation not only identifies/configuration of "br100", but also crafts the VM's network interface configuration, and adds that interface to the VM (by making appropriate libvirt calls). Note that this second option amounts to Quantum controlling a resource on the VM (which ideally should be outside the scope of Quantum).<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>OR, is it something else?<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Kindly let me know what you thoughts are on this. As projected above, these semantics have implications on how nova-compute will deal with spawning VMs (and it might be different from what it is today), and hence it might be important to address this issue sooner.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thanks,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>~Sumit.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>PS: As I write this, it occurs to me that it's not very clear as to what the "create port" operation would do in the above case as well, since no actual port is created on the bridge. Any thoughts?<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p></div></body></html>