<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif; ">
<div style="color: rgb(0, 0, 0); ">Eugene,</div>
<div style="color: rgb(0, 0, 0); "><br>
</div>
<div style="color: rgb(0, 0, 0); ">Please find my inlined reply.</div>
<div style="color: rgb(0, 0, 0); "><br>
</div>
<div style="color: rgb(0, 0, 0); ">Thanks</div>
<div style="color: rgb(0, 0, 0); ">Anand</div>
<div style="color: rgb(0, 0, 0); "><br>
</div>
<span id="OLK_SRC_BODY_SECTION" style="color: rgb(0, 0, 0); ">
<div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style="font-weight:bold">From: </span>Eugene Nikanorov <<a href="mailto:enikanorov@mirantis.com">enikanorov@mirantis.com</a>><br>
<span style="font-weight:bold">Reply-To: </span>OpenStack Development Mailing List <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br>
<span style="font-weight:bold">Date: </span>Tue, 27 Nov 2012 12:48:26 +0400<br>
<span style="font-weight:bold">To: </span>OpenStack Development Mailing List <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [openstack-dev] [Quantum][LBaaS] Progress on lbaas-plugin-api-crud<br>
</div>
<div><br>
</div>
Anand,
<div><br>
</div>
<div>1. Service Type is generic set of types not limited to balancers (VendorX firewall, VendorY balancer, etc). </div>
<div>Salvatore will correct me if I'm wrong.</div>
<div>As far as I understand, service type applies to router, while device type describes load balancing device.</div>
<div>Therefore Service Type may map directly to balancer device type - it's detail of how Salvatore implements it.</div>
<div>That's why I said "<span style="font-size: 14px; font-family: Calibri, sans-serif; ">device type via service_type"</span></div>
</span>
<div><font class="Apple-style-span" color="#008d2b">[Anand] I do not expect that Tenant will specify the vendor product where the VIP should be created. </font></div>
<div><font class="Apple-style-span" color="#008d2b">It is up-to the scheduler to decide based on the available capability (it could be a extension capability also) and place the VIP appropriate LB.</font></div>
<span id="OLK_SRC_BODY_SECTION">
<div><font face="Calibri,sans-serif"><span style="font-size:14px"><br>
</span></font></div>
<div style="color: rgb(0, 0, 0); "><font face="Calibri,sans-serif"><span style="font-size:14px">2. I'm not sure what do you mean by multiple versions of the same device type.</span></font></div>
<div style="color: rgb(0, 0, 0); "><font face="Calibri,sans-serif"><span style="font-size:14px">Do you mean multiple versions of device driver? </span></font></div>
<div style="color: rgb(0, 0, 0); "><font face="Calibri,sans-serif"><span style="font-size:14px">I don't see why we should have multiple versions of device drivers loaded simultaneously.</span></font></div>
</span>
<div><font class="Apple-style-span" color="#008d2b">[Anand] We have to run more than 1 software version per LB to meet operational requirements like upgrades,backward compatibility etc.</font></div>
<div><font class="Apple-style-span" color="#008d2b"> For example, we will run Ver10 and Ver11 for LB Vendor Product1 and Ver8 & Ver9 for another product.</font></div>
<div><font class="Apple-style-span" color="#008d2b"> Scheduler should pick the right driver to deal with the devices interaction.</font></div>
<div style="color: rgb(0, 0, 0); "><br>
</div>
<span id="OLK_SRC_BODY_SECTION" style="color: rgb(0, 0, 0); ">
<div><font face="Calibri,sans-serif"><span style="font-size:14px">3. I tried to cover it in this blueprint: <a href="http://wiki.openstack.org/Quantum/LBaaS/Agent">http://wiki.openstack.org/Quantum/LBaaS/Agent</a></span></font><span style="font-size: 14px; font-family: Calibri, sans-serif; "> </span></div>
<div><span style="font-size: 14px; font-family: Calibri, sans-serif; ">Feel free to comment</span></div>
</span>
<div><font class="Apple-style-span" color="#008d2b">[Anand] The locking mechanism for handling the concurrency is considered and looks good to me. The DB approach does not seems to be scaling for large scale infrastructure. We used "Zoo Keeper" in eBay to meet
the SLA. JFYI</font></div>
<div><font class="Apple-style-span" color="#008d2b"> But we need to make the decision where we want to lock the entire device or VIP level. Also, some use cases make the changes to standby node and sync it over to Primary for safe guard the misconfiguration
issues.</font></div>
<span id="OLK_SRC_BODY_SECTION" style="color: rgb(0, 0, 0); ">
<div><span style="font-size: 14px; font-family: Calibri, sans-serif; "><br>
</span></div>
<div><span style="font-size: 14px; font-family: Calibri, sans-serif; ">4. What do you mean by saying "</span><span style="font-size: 14px; font-family: Calibri, sans-serif; ">LBaaS should handle its scheduling instead of the plugin."?</span></div>
<div><span style="font-size: 14px; font-family: Calibri, sans-serif; ">LBaaS is a plugin within the quantum.</span></div>
</span>
<div>[<font class="Apple-style-span" color="#008d2b">Anand] I meant the same. Driver is not going to schedule the LB operations. Also, we need a mechanism to track all these Operations in LBaaS. For example, when we lock the LB for stopping the concurrent modifications,
the subsequent request will get queued and the tenant might interested in knowing the status of the LB changes that he requested. It would be better to report back the errors for a particular execution failure.</font></div>
<span id="OLK_SRC_BODY_SECTION" style="color: rgb(0, 0, 0); ">
<div><span style="font-size: 14px; font-family: Calibri, sans-serif; "><br>
</span></div>
<div><span style="font-size: 14px; font-family: Calibri, sans-serif; ">Thanks,</span></div>
<div><span style="font-size: 14px; font-family: Calibri, sans-serif; ">Eugene.</span></div>
<div><br>
<div class="gmail_quote">On Tue, Nov 27, 2012 at 10:41 AM, Palanisamy, Anand <span dir="ltr">
<<a href="mailto:apalanisamy@paypal.com" target="_blank">apalanisamy@paypal.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="font-size:14px;font-family:Calibri,sans-serif;word-wrap:break-word">
<div>Eugene,</div>
<div><br>
</div>
<div>We need to get more details about following before we conclude the implementation details.</div>
<ol>
<li>Possible values for "device type via service_type"?</li><li>How does the multiple versions for each device type is handled? Agent or Plugin?</li><li>How is the concurrency config update issues and sync issues solved?</li><li>I think that LBaaS should handle its scheduling instead of the plugin.</li></ol>
<div>Thanks</div>
<div>Anand</div>
<div><br>
</div>
<span>
<div style="border-right:medium none;padding-right:0in;padding-left:0in;padding-top:3pt;text-align:left;font-size:11pt;border-bottom:medium none;font-family:Calibri;border-top:#b5c4df 1pt solid;padding-bottom:0in;border-left:medium none">
<span style="font-weight:bold">From: </span>Eugene Nikanorov <<a href="mailto:enikanorov@mirantis.com" target="_blank">enikanorov@mirantis.com</a>><br>
<span style="font-weight:bold">Reply-To: </span>OpenStack Development Mailing List <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>
<span style="font-weight:bold">Date: </span>Tue, 27 Nov 2012 10:10:57 +0400<br>
<span style="font-weight:bold">To: </span>OpenStack Development Mailing List <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [openstack-dev] [Quantum][LBaaS] Progress on lbaas-plugin-api-crud<br>
</div>
<div>
<div class="h5">
<div><br>
</div>
Hi Youcef,
<div><br>
</div>
<div>Driver doesn't "choose" device-specific info, driver is device-specific itself. </div>
<div>When we send request to the agent, we need to specify which device to use.</div>
<div><br>
</div>
<div>So once the user have chosen device type via service_type on VIP creation, Quantum not only should associate VIP with device type, but also it should choose particular instance of that device type to deploy the VIP.</div>
<div>The process of choosing the instance is called scheduling. Unlike nova it's unreasonable for LBaaS to have separate scheduler service, thus it makes sense to have them built in the plugin.</div>
<div>I think we should not do this on agent since it doesn't have (and should not have) device database.</div>
<div>Not should it access quantum's database directly.</div>
<div><br>
</div>
<div>So overall workflow will look like the following:</div>
<div>1. Add a device (type, physical info) to device registry (this is a part of Provider API. Call to Quantum made by cloud provider in case of shared devices, or by tenant in case of private VM balancers) </div>
<div>2. Create a VIP, specifying service type (=device type) (call by tenant), </div>
<div>3. Choose device of specified type, associate the VIP with the device (made by Quantum/Plugin)</div>
<div>4. Send message with (logical VIP info, device_type, physical device info) to LBaaS Agent (made by Quantum/Plugin)</div>
<div>5. Communicate with particular device using driver according to device_type (LBaaS Agent)</div>
<div><br>
</div>
<div>Any CRUD request processed by Agent should be supplied by device type and device parameters.</div>
<div><br>
</div>
<div>You may think of alternative approach where device registry is held by the Agent or even driver, but this approach has the next disadvantages:</div>
<div>- Scheduling goes to Agent or Driver and thus Agent/Driver should store VIP-device association while VIP is a "foreign" object for the Agent/Driver.</div>
<div>- If we go with multiple agents for large deployments, we'll need to sync their device databases</div>
<div>- Device locking will be complicated.</div>
<div>- If Agents will have non-intersecting sets of devices in their registries than scheduling will be complicated or not possible.</div>
<div><br>
</div>
<div>Please share you thoughts on this.</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Eugene.</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div class="gmail_quote">On Tue, Nov 27, 2012 at 3:38 AM, Youcef Laribi <span dir="ltr">
<<a href="mailto:Youcef.Laribi@eu.citrix.com" target="_blank">Youcef.Laribi@eu.citrix.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Hi Eugene, Leon,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Could we have the LBaaS plugin choose the “driver” based on service_type info, and then it’s the driver which choose the “device”? The driver can
obviously have its own DB model where it stores device-specific info.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Youcef<u></u><u></u></span></p>
<p class="MsoNormal"><a name="13b409abbd9a8ef2_13b3f18ceb7e728b__MailEndCompose"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "><u></u> <u></u></span></a></p>
<p class="MsoNormal"><b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">From:</span></b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; "> Dan Wendlandt [mailto:<a href="mailto:dan@nicira.com" target="_blank">dan@nicira.com</a>]
<br>
<b>Sent:</b> Monday, November 26, 2012 9:13 AM<br>
<b>To:</b> Leon Cui<br>
<b>Cc:</b> OpenStack Development Mailing List; Salvatore Orlando<br>
<b>Subject:</b> Re: [openstack-dev] </span><span lang="ZH-CN" style="font-size:10.0pt">答复</span><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">:
</span><span lang="ZH-CN" style="font-size:10.0pt">答复</span><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">:
</span><span lang="ZH-CN" style="font-size:10.0pt">答复</span><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">:
</span><span lang="ZH-CN" style="font-size:10.0pt">答复</span><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">:
</span><span lang="ZH-CN" style="font-size:10.0pt">答复</span><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">: Progress on lbaas-plugin-api-crud<u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Mon, Nov 26, 2012 at 9:03 AM, Leon Cui <<a href="mailto:lcui@vmware.com" target="_blank">lcui@vmware.com</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Hi Eugene,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">When did you change get merged into master? I did rebase on last Friday which supposed to be your latest code, but anyway I’m planning to do it again
today. </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Thanks for your reminder that I need to include device mgmt. into DB model. Need to look at Salvatore’s change on ServiceType.</span><u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<div>
<p class="MsoNormal">It seems to me that each LB plugin should be able to define its own DB models for "device mgmt" (e.g., device address/credentials/etc.), as different plugins may have different strategies for how they manage devices. The usual model is
that plugins can define additional models/tables to manage entities that are specific to that plugin. This is similar to how we didn't back the notion of a "vlan" into the DB model for "core plugins", since not all plugins will use vlans. If you don't go
down this route, you end up with a messy DB model as everyone keeps adding columns for items that only a particular plugin needs to track. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Dan<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Thanks</span><u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Leon</span><u></u><u></u></p>
<p class="MsoNormal"><b><span lang="ZH-CN" style="font-size:10.0pt">发件人</span></b><b><span style="font-size:10.0pt">:</span></b><span style="font-size:10.0pt"> Eugene Nikanorov [mailto:<a href="mailto:enikanorov@mirantis.com" target="_blank">enikanorov@mirantis.com</a>]
<br>
<b><span lang="ZH-CN">发送时间</span>:</b> 2012<span lang="ZH-CN">年</span>11<span lang="ZH-CN">月</span>26<span lang="ZH-CN">日</span> 4:29</span><u></u><u></u></p>
<div>
<p class="MsoNormal"><br>
<b><span lang="ZH-CN">收件人</span>:</b> Leon Cui<br>
<b><span lang="ZH-CN">抄送</span>:</b> Ilya Shakhat; Sachin Thakkar; Oleg Bondarev; Salvatore Orlando; Dan Wendlandt<u></u><u></u></p>
</div>
<p class="MsoNormal"><b><span lang="ZH-CN">主题</span>:</b> Re: <span lang="ZH-CN">
答复</span>: <span lang="ZH-CN">答复</span>: <span lang="ZH-CN">答复</span>: <span lang="ZH-CN">
答复</span>: Progress on lbaas-plugin-api-crud<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Hi Leon,<u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks for sending me the patch.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">I've looked at it briefly, there is one major thing I was able to identify:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">In order to couple things together (plugin, agent, drivers), we need to add device management at least to DB model.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">In particular, each vip should have a reference to the device (which has a type and address/credentials). <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">This information is passed in each agent notification message.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">This part is missing in current design blueprints but i think we need to add it before we put the code on review.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Probably it will also depend on Salvatore's ServiceTypes part.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Also I see that your patch is based on some of my outdated patches. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">My code was recently merged into the master so you can rebase on master using only Oleg's patch.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Eugene.<u></u><u></u></p>
<div>
<p class="MsoNormal">On Fri, Nov 23, 2012 at 2:40 PM, Leon Cui <<a href="mailto:lcui@vmware.com" target="_blank">lcui@vmware.com</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Hi Eugene,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">I’m still waiting for approval as openstack contributor. For now I simply attached the patch file that you might want to take a look first. Once
I got the approval, I’ll try to post the view asap.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Thanks</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Leon</span><u></u><u></u></p>
<p class="MsoNormal"><b><span lang="ZH-CN" style="font-size:10.0pt">发件人</span></b><b><span style="font-size:10.0pt">:</span></b><span style="font-size:10.0pt"> Eugene Nikanorov [mailto:<a href="mailto:enikanorov@mirantis.com" target="_blank">enikanorov@mirantis.com</a>]
<br>
<b><span lang="ZH-CN">发送时间</span>:</b> 2012<span lang="ZH-CN">年</span>11<span lang="ZH-CN">月</span>20<span lang="ZH-CN">日</span> 22:57<br>
<b><span lang="ZH-CN">收件人</span>:</b> Leon Cui<br>
<b><span lang="ZH-CN">抄送</span>:</b> Ilya Shakhat; Sachin Thakkar; Oleg Bondarev; Salvatore Orlando; Dan Wendlandt<br>
<b><span lang="ZH-CN">主题</span>:</b> Re: <span lang="ZH-CN">答复</span>: <span lang="ZH-CN">
答复</span>: <span lang="ZH-CN">答复</span>: Progress on lbaas-plugin-api-crud</span><u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Leon,<u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">I'll take agent and rpc parts.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">I have registered <a href="https://blueprints.launchpad.net/quantum/+spec/lbaas-agent-and-rpc" target="_blank">https://blueprints.launchpad.net/quantum/+spec/lbaas-agent-and-rpc</a> to track this.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Eugene.<u></u><u></u></p>
<div>
<p class="MsoNormal">On Tue, Nov 20, 2012 at 2:16 PM, Leon Cui <<a href="mailto:lcui@vmware.com" target="_blank">lcui@vmware.com</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Hi Eugene,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Thanks for your suggestion. It looks good to me. I’ll work out the UT first, and then align the class model to the diagram as you suggested.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Thanks</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Leon</span><u></u><u></u></p>
<p class="MsoNormal"><b><span lang="ZH-CN" style="font-size:10.0pt">发件人</span></b><b><span style="font-size:10.0pt">:</span></b><span style="font-size:10.0pt"> Eugene Nikanorov [mailto:<a href="mailto:enikanorov@mirantis.com" target="_blank">enikanorov@mirantis.com</a>]
<br>
<b><span lang="ZH-CN">发送时间</span>:</b> 2012<span lang="ZH-CN">年</span>11<span lang="ZH-CN">月</span>20<span lang="ZH-CN">日</span> 17:32</span><u></u><u></u></p>
<div>
<p class="MsoNormal"><br>
<b><span lang="ZH-CN">收件人</span>:</b> Leon Cui<br>
<b><span lang="ZH-CN">抄送</span>:</b> Ilya Shakhat; Sachin Thakkar; Oleg Bondarev; Salvatore Orlando<u></u><u></u></p>
</div>
<p class="MsoNormal"><b><span lang="ZH-CN">主题</span>:</b> Re: <span lang="ZH-CN">
答复</span>: <span lang="ZH-CN">答复</span>: Progress on lbaas-plugin-api-crud<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal"><span style="color: rgb(34, 34, 34); font-size: 10pt; background-image: initial; font-family: Arial, sans-serif; ">replying to all...</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<p class="MsoNormal"><span style="color: rgb(34, 34, 34); font-size: 10pt; background-image: initial; font-family: Arial, sans-serif; ">Leon,</span><u></u><u></u></p>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; "> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; ">I think </span><span style="font-size: 11.5pt; color: rgb(34, 34, 34); font-family: Calibri, sans-serif; ">tests/unit/test_db_plugin.py
is right code to refer when writing unit tests for db code. The only thing is that unit tests written in test_db_plugin.py are a bit generic, e.g. the backend plugin is specified in particular plugin's UTs which inherit from QuantumDbPluginV2TestCase. I think
UTs for balancer plugin may be more specific, testing </span><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; ">LoadbalancerPluginDb class.</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; "> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; ">Since you need dababase utility methods from QuantumDbPluginV2 then it's LoadbalancerPluginDb which should inherit from such
QuantumDBBase (or whatever you call it), so overall diagram will look like:</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; "> </span><u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; ">ServicePluginBase</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; "> |</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; ">LoadBalancerPluginBase </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; "> |</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; "> | QuantumDBBase </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; "> | |</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; ">LoadBalancerPlugin <---------- LoadBalancerPluginDb</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; "> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; ">Thanks,</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size: 10pt; color: rgb(34, 34, 34); font-family: Arial, sans-serif; ">Eugene.</span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal">On Tue, Nov 20, 2012 at 1:04 PM, Leon Cui <<a href="mailto:lcui@vmware.com" target="_blank">lcui@vmware.com</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Hi Eugene,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Thanks for your suggestion. Please see my comments inline.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">One more question: I’m writing the unit test, mainly to verify the database functionalities for LB CRUD. Do you think tests/unit/test_db_plugin.py
is the right test code that I should refer to? Any good suggestions on this front?</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Thanks</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Leon</span><u></u><u></u></p>
<p class="MsoNormal"><b><span lang="ZH-CN" style="font-size:10.0pt">发件人</span></b><b><span style="font-size:10.0pt">:</span></b><span style="font-size:10.0pt"> Eugene Nikanorov [mailto:<a href="mailto:enikanorov@mirantis.com" target="_blank">enikanorov@mirantis.com</a>]
<br>
<b><span lang="ZH-CN">发送时间</span>:</b> 2012<span lang="ZH-CN">年</span>11<span lang="ZH-CN">月</span>20<span lang="ZH-CN">日</span> 16:44<br>
<b><span lang="ZH-CN">收件人</span>:</b> Leon Cui<br>
<b><span lang="ZH-CN">抄送</span>:</b> Ilya Shakhat; Sachin Thakkar; Oleg Bondarev; Salvatore Orlando<br>
<b><span lang="ZH-CN">主题</span>:</b> Re: <span lang="ZH-CN">答复</span>: Progress on lbaas-plugin-api-crud</span><u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Hi Leon,<u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">A few thoughts on your diagram.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Please consider the following:<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">1) If you want something from QuantumDbPluginV2 and you feel it may be common plugin functionality - you need to extract it to a separate class, something like QuantumPluginBase, and inherit QuantumDBPluginV2 from this class, ServicePluginBase
should inherit from that class as well.<u></u><u></u></p>
</div>
<p class="MsoNormal"><span style="color:#1f497d">[Leon] I need some dababase utility methods from QuantumDbPluginV2. Abstract to a separate class could be a good idea. But I<span lang="ZH-CN">’</span>m not sure if it<span lang="ZH-CN">’</span>s a good idea
to let ServicePluginBase to inherit from this class. ServicePluginBase is an abstract class for service plugin service (quantum manager) to use.
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span><u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">2) LoadBalancerPluginBase imho should inherit from ServicePluginBase<u></u><u></u></p>
</div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">[Leon] Why it needs to inherit from ServicePluginBase? LoadBalancerPluginBase defines the loadbalancer extension APIs. I think we just make sure
LoadbalancerPlugin inherits from both classes as below:</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f497d">ServicePluginBase QuantumPluginDbBase LoadbalancerPluginBase</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f497d"> | | |</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f497d"> ----------------------------------------------</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f497d"> |</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f497d"> LoadbalancerPlugin ------ LoadbalancerPluginDb</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">LoadbalancerPlugin will contain the LoadbalancerPluginDb instance for database access.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">3) Depending on what you need from QuantumDbPluginV2/QuantumPluginBase, this may lead to the following inheritance sequence:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">QuantumPluginBase<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> |<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">ServicePluginBase<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> |<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">LoadBalancerPluginBase <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> |<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">LoadBalancerPluginDb<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> |<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">LoadBalancerPlugin<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Also, I think that LoadBalancerPlugin should not inherit LoadBalancerPluginDb. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Unlike core plugins where it could make sense, I'd prefer to see LoadBalancerPluginDb to be a part of LoadBalancerPlugin.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">I mean LoadBalancerPlugin implements "has a" LoadBalancerPluginDb instead of "is a" relation. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">The reason for this is that LoadBalancerPlugin provides CRUD implementation which doesn't directly map to DB operations implemented in LoadBalancerPluginDb.
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">E.g. my idea is:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">LoadBalancerPlugin - CRUD, validation, calling LoadBalancerPluginDb, sending/receiving messages to agent<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">LoadBalancerPluginDb - DB access.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Eugene.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal">On Tue, Nov 20, 2012 at 6:54 AM, Leon Cui <<a href="mailto:lcui@vmware.com" target="_blank">lcui@vmware.com</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Hi Ilya,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">R</span><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">ight now I took Eugene’s change under review (</span><span style="color:#003300"><a href="https://review.openstack.org/#/c/15733/" target="_blank">https://review.openstack.org/#/c/15733/</a></span><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">)
and am developing the database access logic and plugin skeleton based on that service plugin mechanism.</span><span style="font-size:11pt;font-family:Calibri,sans-serif"><span style="color:#1f497d">The class model is illustrated in the below diagram:</span></span><u></u><u></u></p>
<table border="0" cellspacing="0" cellpadding="0" align="left">
<tbody>
<tr>
<td width="87" style="width:65.25pt;padding:0in 0in 0in 0in"></td>
<td width="107" style="width:80.25pt;padding:0in 0in 0in 0in"></td>
<td width="178" style="width:133.5pt;padding:0in 0in 0in 0in"></td>
<td width="249" style="width:186.75pt;padding:0in 0in 0in 0in"></td>
</tr>
<tr style="min-height:128.25pt">
<td style="padding:0in 0in 0in 0in;min-height:128.25pt"></td>
<td colspan="3" valign="top" style="padding:0in 0in 0in 0in;min-height:128.25pt">
<p class="MsoNormal"><img border="0" width="534" height="171" src="cid:image001.png@01CDCBEC.1BFA20B0" alt="ServicePluginBase
(quantum.plugins.services.service_base)
,QuantumDbPluginV2 (quantum.db. db_base_plugin_v2),LoadBalancerPluginDb (quantum.plugins.services.loadbalancer.loadbalancer_db),LoadBalancerPluginBase (quantum.extensions.loadbalancer)"><u></u><u></u></p>
</td>
</tr>
<tr style="min-height:2.25pt">
<td style="padding:0in 0in 0in 0in;min-height:2.25pt"></td>
<td style="padding:0in 0in 0in 0in;min-height:2.25pt"></td>
<td style="padding:0in 0in 0in 0in;min-height:2.25pt"></td>
<td style="padding:0in 0in 0in 0in;min-height:2.25pt"></td>
</tr>
<tr style="min-height:51.0pt">
<td style="padding:0in 0in 0in 0in;min-height:51.0pt"></td>
<td style="padding:0in 0in 0in 0in;min-height:51.0pt"></td>
<td valign="top" style="padding:0in 0in 0in 0in;min-height:51.0pt">
<p class="MsoNormal"><img border="0" width="178" height="68" src="cid:image002.png@01CDCBEC.1BFA20B0" alt="LoadBalancerPlugin (quantum.plugins.services.loadbalancer.loadbalancerPlugin)"><u></u><u></u></p>
</td>
<td style="padding:0in 0in 0in 0in;min-height:51.0pt"></td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><br clear="all">
<u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">LoadBalancerPlugin module is the main body of loadbalancer plugin which inherits from multiple classes:</span><u></u><u></u></p>
<p style="margin-left:22.5pt"><span style="color:#1f497d">-</span><span style="font-size: 7pt; color: rgb(31, 73, 125); font-family: 'Times New Roman', serif; ">
</span><span style="color:#1f497d">ServicePluginBase: defines the abstract methods that a service plugin should implemented.</span><u></u><u></u></p>
<p style="margin-left:22.5pt"><span style="color:#1f497d">-</span><span style="font-size: 7pt; color: rgb(31, 73, 125); font-family: 'Times New Roman', serif; ">
</span><span style="color:#1f497d">QuantumDbPluginV2: contains a set of generic quantum database access methods. I’m not sure if we really want to inherit from this class but I’d like to leverage the methods defined in this class.</span><u></u><u></u></p>
<p style="margin-left:22.5pt"><span style="color:#1f497d">-</span><span style="font-size: 7pt; color: rgb(31, 73, 125); font-family: 'Times New Roman', serif; ">
</span><span style="color:#1f497d">LoadBalancerPluginDb: This the main part I’m coding on which wrap the Lbaas database model and CRUD operation against the database.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">My thought is that LoadBalancerPlugin will control the LBaaS CRUD API flow. For instance, “create_vip” method should first validate the input, update
the database, send message to the LbAgent over AMQP channel, than update the database by setting the status from PENDING_CREATE to ACTIVE.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">I’m trying to write unit tests against the database access now which will take a while to complete. Meanwhile it would be great to have your help
on coding the RPC interaction between plugin and agent.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">I don’t like blocking your part. What’s the best practice to collaborate with you on this? Maybe I can shelve my change to you somehow?</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Thanks</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Leon</span><u></u><u></u></p>
<p class="MsoNormal"><b><span lang="ZH-CN" style="font-size:10.0pt">发件人</span></b><b><span style="font-size:10.0pt">:</span></b><span style="font-size:10.0pt"> Ilya Shakhat [mailto:<a href="mailto:ishakhat@mirantis.com" target="_blank">ishakhat@mirantis.com</a>]
<br>
<b><span lang="ZH-CN">发送时间</span>:</b> 2012<span lang="ZH-CN">年</span>11<span lang="ZH-CN">月</span>19<span lang="ZH-CN">日</span> 22:08<br>
<b><span lang="ZH-CN">收件人</span>:</b> Sachin Thakkar; Leon Cui<br>
<b><span lang="ZH-CN">抄送</span>:</b> Eugene Nikanorov; Oleg Bondarev<br>
<b><span lang="ZH-CN">主题</span>:</b> Progress on lbaas-plugin-api-crud</span><u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Hi Sachin, Leo, <u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Recently there was a thread related to LBaaS architecture (<a href="http://lists.openstack.org/pipermail/openstack-dev/2012-November/002646.html" target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2012-November/002646.html</a>).
How good is it aligned with your implementation? Do you need help in coding? (we may take Agent part) <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Ilya<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<span><font color="#888888">
<p class="MsoNormal"><br>
<br clear="all">
<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal">-- <br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
Dan Wendlandt <u></u><u></u></p>
</font></span>
<div>
<div>
<p class="MsoNormal">Nicira, Inc: <a href="http://www.nicira.com" target="_blank">www.nicira.com</a><u></u><u></u></p>
<div>
<p class="MsoNormal">twitter: danwendlandt<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
_______________________________________________ OpenStack-dev mailing list <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">
OpenStack-dev@lists.openstack.org</a> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a> </div>
</div>
</span></div>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
_______________________________________________ OpenStack-dev mailing list <a href="mailto:OpenStack-dev@lists.openstack.org">
OpenStack-dev@lists.openstack.org</a> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a> </span>
</body>
</html>