lp:~troy-toman/nova/lp785812

Created by Troy Toman and last modified
Get this branch:
bzr branch lp:~troy-toman/nova/lp785812
Only Troy Toman can upload to this branch. If you are Troy Toman please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Troy Toman
Project:
OpenStack Compute (nova)
Status:
Merged

Recent revisions

1451. By Troy Toman

Removed a change from faults.py that was not required."

1450. By Troy Toman

Changed return code to 413 for metadata, personality and instance quota issues

1449. By dan wendlandt

I'm taking Thierry at his word that I should merge early and merge often :)

In Diablo-3 we introduced "vif-plugging" to the hypervisor "virt" layer, allowing flexibility in how vNICs are attached to the network switch. This allowed non-linux bridge switch technologies (e.g., Open vSwitch, 802.1qbh) to be used with nova.

This blueprint adds a similar capability to linux_net.py, allowing the L3/DHCP capabilities to be "plugged" into Quantum networks. Like in the virt layer, we created a vif driver that represents the behavior of Nova prior to the change (LinuxBridgeInterfaceDriver) and make it the default. We also add a new driver for Open Vswitch that can be enabled using a flag (LinuxOVSInterfaceDriver). The code is designed to support other drivers as well.

Most of the interesting code is at the bottom of linux_net.py, where the drivers are defined. I had to pull some common code related to setting IPs on devices out of ensure_bridge() so it could be used by either approach. The driver's plug() method is invoked by the VlanManager's _setup_network() method. Currently unplug() is unused, which seems to be inline with how the existing nova code works.

In many places in linux_net.py, I had to tweak functions to accept the name of the linux device to configure, rather than just assuming it was the 'bridge' field in the network object, since with OVS it could be any linux device. The code I am least sure about are the changes to bin/nova-dhcpbridge. I changed to this key off of the network ID, rather than the bridge name.

I've tested this with the linux bridge and with the OVS vif-plugging driver. I was able to confirm that L3 forwarding and DHCP were operating correctly.

1448. By Vish Ishaya

Fixes issue with exceptions getting eaten in image/s3.py if there is a failure during register. The variables referenced with locals() were actually out of scope.

1447. By Josh Kearney

Allow local_gb size to be 0. libvirt uses local_gb as a secondary drive, but XenServer uses it as the root partition's size. Now we support both.

Include some random PEP8 fixes.

1446. By Jason Kölker

Use netaddr's subnet features to calculate subnets.

1445. By Vladimir Popovski

* Added search instance by metadata.
* instance_get_all_by_filters should filter deleted

1444. By Jake Dahn

This branch implements a nova api extension which allows you to manage and update tenant/project quotas.

1443. By Dan Prince

Updated the EC2 metadata controller so that it returns the correct value for instance-type metadata.

1442. By Ed Leafe

Refactored the HostFilterScheduler and LeastCostScheduler classes so that they can be combined into a single class that can do both host filtering and host weighting, allowing subclasses to override those processes as needed. Also renamed the ZoneAwareScheduler to AbstractScheduler, for two reasons: one, the 'zone-aware' designation was necessary when the zone code was being developed; now that it is part of nova, it is not an important distinction. Second, the 'Abstract' part clearly indicates that this is a class that is not designed to be used directly, but rather as the basis for specific scheduler subclasses.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:~hudson-openstack/nova/trunk
This branch contains Public information 
Everyone can see this information.

Subscribers