Hi Trey,<div><br></div><div>Ideally speaking, yes, we would like Melange to be the IP management solution for Nova. But there are enough impediments to this, not the least of which is migration for existing nova deployments to use Melange.</div>
<div>So to achieve step 3, we could refactor the current network managers to work with an IP management abstraction (something like an 'ip_driver' for lack of a better name). Then using Melange for all of nova-network would mean an alternate implementation of this ip_driver that redirects all calls to the Melange REST Api. While this is easier said than done, if we are able to get to this, then using Melange or the existing nova IPAM becomes just a configuration option. </div>
<div>Then, as and when people see value in Melange, they can take the steps necessary to move to it. And then the community can take a call on wether nova's current IPAM scheme is useful enough to be retained.</div><div>
<br></div><div>Thanks,</div><div>Rajaram</div><div><br><div class="gmail_quote">On Thu, Jul 28, 2011 at 10:32 AM, Trey Morris <span dir="ltr"><<a href="mailto:trey.morris@rackspace.com">trey.morris@rackspace.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Just so we are all on the same page: step 3 refers to refactoring the existing network managers to use melange, is the ultimate goal here for melange to replace the current nova ip management scheme entirely?<br>
<br><div class="gmail_quote"><div><div></div><div class="h5">
On Wed, Jul 27, 2011 at 11:10 PM, Troy Toman <span dir="ltr"><<a href="mailto:troy.toman@rackspace.com" target="_blank">troy.toman@rackspace.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div></div><div class="h5">



<div style="word-wrap:break-word">
At the Diablo summit, one of the outcomes from the networking discussions was the decision to build a separate IP address management system (IPAM). The work to deliver on this requirement has been done under the project name Melange. Melange is envisioned to
 provide network information services that can track IP blocks, subnets, address allocation and also manage gateway and NAT'ing information. Our target has been to encapsulate the required IPAM features into a separate service with a RESTful API. This would
 provide a way to isolate IP management and also provide a future, centralized service for other OpenStack offerings. 
<div><br>
</div>
<div>In discussions over the past few weeks with Vish and other Nova core devs, it was recommended that we bring the Melange effort into the Nova project. There were several reasons feels like right direction. First, there is a great deal of refactoring that
 needs to be done with Nova's current IP management code and this approach would prevent doing it twice. The project is small enough that it doesn't seem to warrant a full-scale incubated project in FutureStack. Nova core devs could oversee the evolution and
 commits for Melange to ensure consistency and adequate coverage for Nova's needs.</div>
<div><br>
</div>
<div>Based on this feedback, we are proposing a plan with the following steps:</div>
<div><br>
</div>
<div>1. Bring Melange into a subfolder within Nova.  It would not share any code with nova, but it does use ‘dev infrastructure’ like run_tests.sh and pip-installs of nova. There is no direct coupling between the two, Nova interacts with Melange through REST.
 Melange development stack is similar to glance.</div>
<div><br>
</div>
<div>2. Integrate Melange into a new "NetStack" network manager that would exploit both Melange and Quantum</div>
<div><br>
</div>
<div>3. Use Melange to refactor Nova features such as DHCP, Floating IPs, HA IP allocation, Shared IPs</div>
<div><br>
</div>
<div>With these ideas in mind, we will be making a merge prop within the next week or two to address step 1. There will be ample time to review code and comment on the merge prop. But, I wanted to provide and opportunity to discuss this approach ahead of time
 and point you to some resources to find out more about Melange so that no one is unprepared.</div>
<div><br>
</div>
<div>There is a current Launchpad branch for Melange that can be found here:</div>
<div><br>
</div>
<div><a href="https://code.launchpad.net/~raxnetworking/nova/melange" target="_blank">https://code.launchpad.net/~raxnetworking/nova/melange</a></div>
<div><br>
</div>
<div>A draft API specification (still needs more formatting work but it's a start!):</div>
<div><a href="http://wiki.openstack.org/MelangeAPIBase" target="_blank">http://wiki.openstack.org/MelangeAPIBase</a></div>
<div><br>
</div>
<div>Initial blueprints:</div>
<div><br>
</div>
<div><a href="https://blueprints.launchpad.net/nova/+spec/melange-network-info-svcs" target="_blank">https://blueprints.launchpad.net/nova/+spec/melange-network-info-svcs</a></div>
<div><a href="https://blueprints.launchpad.net/nova/+spec/melange-ipam" target="_blank">https://blueprints.launchpad.net/nova/+spec/melange-ipam</a></div>
<div><a href="https://blueprints.launchpad.net/nova/+spec/melange-api" target="_blank"></a><a href="https://blueprints.launchpad.net/nova/+spec/melange-api" target="_blank"></a><a href="https://blueprints.launchpad.net/nova/+spec/melange-api" target="_blank">https://blueprints.launchpad.net/nova/+spec/melange-api</a></div>


<div><a href="https://blueprints.launchpad.net/nova/+spec/melange-address-discovery" target="_blank">https://blueprints.launchpad.net/nova/+spec/melange-address-discovery</a></div>
<div><br>
</div>
<div>Please let me know if there are any other questions that we can field while we finalize our current work to prepare the code for a move into Nova.</div>
<div><br>
</div>
<div>Thank you,</div>
<div>Troy Toman</div><font color="#888888">
<font face="monospace">This email may include confidential information. If you received it in error, please delete it.</font></font></div>

<br></div></div>_______________________________________________<br>
Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
Post to     : <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a><br>
Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
<br></blockquote></div><br>
<br>_______________________________________________<br>
Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
Post to     : <a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a><br>
Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
<br></blockquote></div><br></div>