~hudson-openstack/nova/trunk

« back to all changes in this revision

Viewing changes to nova/virt/libvirt/vif.py

  • Committer: Tarmac
  • Author(s): Dan Wendlandt, Brad Hall, danwent at gmail
  • Date: 2011-09-08 07:43:11 UTC
  • mfrom: (1476.2.39 nova-trunk)
  • Revision ID: tarmac-20110908074311-j8grm3qj79bx04ra
This code contains contains a new NetworkManager class that can leverage Quantum + Melange.  

Thierry suggested that I merge prop this to get feedback, even though it is too late to get a branch of this size in for D-4.  Feedback will help determine whether we can get this code in during the Diablo time frame or not.  This branch was developed stacked on top of the melange branch, which is still not merged, but I am merge-propping it without that branch so that the diff is correct.  

The vast majority of the code is in nova/network/quantum and is only invoked if the network manager is set to nova.network.quantum.QuantumManager

In addition to implementing networks with Quantum instead of the linux bridge, the QuantumManager also provides a new, more flexible model of associating vNICs with networks.  It supports the creation of networks that are specific to a project and networks that are "global".  When a VM is created, it gets a vNIC for each project network, as well as each global network.  For example, this could support giving a VM a "public" vNIC on a shared network and a "private" vNIC on a tenant-specific network.  

The branch also implements Tushar's 'os-create-server-ext' extension, so that the server create API call can indicate the set of networks the VM should be attached to (if this extension is used, it replaces the above mechanism for determining vNICs).  

QuantumManager can use either the traditional IPAM functionality in nova DB (i.e., the networks, fixed_ips tables) or melange.  Similar to FlatManager, QuantumManager does not currently support DHCP, gateway/NAT, or floating IPs.  

This branch requires additional testing before it is really ready for merge, but we thought it would be best to merge prop as soon as possible to identify any significant concerns people had. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
101
101
    """VIF driver for Open vSwitch."""
102
102
 
103
103
    def get_dev_name(_self, iface_id):
104
 
        return "tap-" + iface_id[0:15]
 
104
        return "tap" + iface_id[0:11]
105
105
 
106
106
    def plug(self, instance, network, mapping):
107
107
        iface_id = mapping['vif_uuid']