summaryrefslogtreecommitdiff
path: root/nova/virt/libvirt
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-08-02 05:31:25 +0000
committerGerrit Code Review <review@openstack.org>2013-08-02 05:31:25 +0000
commitb18818add1ed2f60d6dee7f6f826c1338e1b8335 (patch)
tree32d4105d33d997836d2c6db130a23775897c9ee0 /nova/virt/libvirt
parent01edbaa471f2dfe848f9e47cf862a8ce0b38e246 (diff)
parent2c1061df8e4ac1a228d79b5ed9c331035fa08d72 (diff)
downloadnova-b18818add1ed2f60d6dee7f6f826c1338e1b8335.tar.gz
Merge "Add inst_type parameter" into stable/grizzly
Diffstat (limited to 'nova/virt/libvirt')
-rw-r--r--nova/virt/libvirt/designer.py4
-rwxr-xr-xnova/virt/libvirt/driver.py3
-rw-r--r--nova/virt/libvirt/vif.py84
3 files changed, 55 insertions, 36 deletions
diff --git a/nova/virt/libvirt/designer.py b/nova/virt/libvirt/designer.py
index 8dc579300b..85641fa31f 100644
--- a/nova/virt/libvirt/designer.py
+++ b/nova/virt/libvirt/designer.py
@@ -100,7 +100,7 @@ def set_vif_host_backend_802qbh_config(conf, devname, profileid,
conf.target_dev = tapname
-def set_vif_bandwidth_config(conf, extra_specs):
+def set_vif_bandwidth_config(conf, inst_type):
"""Config vif inbound/outbound bandwidth limit. parameters are
set in instance_type_extra_specs table, key is in the format
quota:vif_inbound_average.
@@ -109,7 +109,7 @@ def set_vif_bandwidth_config(conf, extra_specs):
bandwidth_items = ['vif_inbound_average', 'vif_inbound_peak',
'vif_inbound_burst', 'vif_outbound_average', 'vif_outbound_peak',
'vif_outbound_burst']
- for key, value in extra_specs.iteritems():
+ for key, value in inst_type['extra_specs'].iteritems():
scope = key.split(':')
if len(scope) > 1 and scope[0] == 'quota':
if scope[1] in bandwidth_items:
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 7092cf1afa..8eae45248f 100755
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -2259,7 +2259,8 @@ class LibvirtDriver(driver.ComputeDriver):
for (network, mapping) in network_info:
cfg = self.vif_driver.get_config(instance,
network, mapping,
- image_meta)
+ image_meta,
+ inst_type)
guest.add_device(cfg)
if CONF.libvirt_type == "qemu" or CONF.libvirt_type == "kvm":
diff --git a/nova/virt/libvirt/vif.py b/nova/virt/libvirt/vif.py
index c8a87bd3c8..f18021ef49 100644
--- a/nova/virt/libvirt/vif.py
+++ b/nova/virt/libvirt/vif.py
@@ -92,7 +92,7 @@ class LibvirtBaseVIFDriver(object):
return mapping['vif_devname']
return ("nic" + mapping['vif_uuid'])[:network_model.NIC_NAME_LEN]
- def get_config(self, instance, network, mapping, image_meta):
+ def get_config(self, instance, network, mapping, image_meta, inst_type):
conf = vconfig.LibvirtConfigGuestInterface()
# Default to letting libvirt / the hypervisor choose the model
model = None
@@ -159,13 +159,14 @@ class LibvirtGenericVIFDriver(LibvirtBaseVIFDriver):
return True
return False
- def get_config_bridge(self, instance, network, mapping, image_meta):
+ def get_config_bridge(self, instance, network, mapping, image_meta,
+ inst_type):
"""Get VIF configurations for bridge type."""
conf = super(LibvirtGenericVIFDriver,
self).get_config(instance,
network,
mapping,
- image_meta)
+ image_meta, inst_type)
designer.set_vif_host_backend_bridge_config(
conf, self.get_bridge_name(network),
@@ -175,28 +176,30 @@ class LibvirtGenericVIFDriver(LibvirtBaseVIFDriver):
name = "nova-instance-" + instance['name'] + "-" + mac_id
if self.get_firewall_required():
conf.filtername = name
- designer.set_vif_bandwidth_config(conf, instance)
+ designer.set_vif_bandwidth_config(conf, inst_type)
return conf
- def get_config_ovs_ethernet(self, instance, network, mapping, image_meta):
+ def get_config_ovs_ethernet(self, instance, network, mapping,
+ image_meta, inst_type):
conf = super(LibvirtGenericVIFDriver,
self).get_config(instance,
network,
mapping,
- image_meta)
+ image_meta, inst_type)
dev = self.get_vif_devname(mapping)
designer.set_vif_host_backend_ethernet_config(conf, dev)
return conf
- def get_config_ovs_bridge(self, instance, network, mapping, image_meta):
+ def get_config_ovs_bridge(self, instance, network, mapping, image_meta,
+ inst_type):
conf = super(LibvirtGenericVIFDriver,
self).get_config(instance,
network,
mapping,
- image_meta)
+ image_meta, inst_type)
designer.set_vif_host_backend_ovs_config(
conf, self.get_bridge_name(network),
@@ -205,34 +208,40 @@ class LibvirtGenericVIFDriver(LibvirtBaseVIFDriver):
return conf
- def get_config_ovs_hybrid(self, instance, network, mapping, image_meta):
+ def get_config_ovs_hybrid(self, instance, network, mapping, image_meta,
+ inst_type):
newnet = copy.deepcopy(network)
newnet['bridge'] = self.get_br_name(mapping['vif_uuid'])
return self.get_config_bridge(instance,
newnet,
mapping,
- image_meta)
+ image_meta, inst_type)
- def get_config_ovs(self, instance, network, mapping, image_meta):
+ def get_config_ovs(self, instance, network, mapping, image_meta,
+ inst_type):
if self.get_firewall_required():
return self.get_config_ovs_hybrid(instance, network,
mapping,
- image_meta)
+ image_meta,
+ inst_type)
elif self.has_libvirt_version(LIBVIRT_OVS_VPORT_VERSION):
return self.get_config_ovs_bridge(instance, network,
mapping,
- image_meta)
+ image_meta,
+ inst_type)
else:
return self.get_config_ovs_ethernet(instance, network,
mapping,
- image_meta)
+ image_meta,
+ inst_type)
- def get_config_802qbg(self, instance, network, mapping, image_meta):
+ def get_config_802qbg(self, instance, network, mapping, image_meta,
+ inst_type):
conf = super(LibvirtGenericVIFDriver,
self).get_config(instance,
network,
mapping,
- image_meta)
+ image_meta, inst_type)
params = mapping["qbg_params"]
designer.set_vif_host_backend_802qbg_config(
@@ -244,12 +253,13 @@ class LibvirtGenericVIFDriver(LibvirtBaseVIFDriver):
return conf
- def get_config_802qbh(self, instance, network, mapping, image_meta):
+ def get_config_802qbh(self, instance, network, mapping, image_meta,
+ inst_type):
conf = super(LibvirtGenericVIFDriver,
self).get_config(instance,
network,
mapping,
- image_meta)
+ image_meta, inst_type)
params = mapping["qbh_params"]
designer.set_vif_host_backend_802qbh_config(
@@ -258,7 +268,7 @@ class LibvirtGenericVIFDriver(LibvirtBaseVIFDriver):
return conf
- def get_config(self, instance, network, mapping, image_meta):
+ def get_config(self, instance, network, mapping, image_meta, inst_type):
vif_type = mapping.get('vif_type')
LOG.debug(_("vif_type=%(vif_type)s instance=%(instance)s "
@@ -273,19 +283,23 @@ class LibvirtGenericVIFDriver(LibvirtBaseVIFDriver):
if vif_type == network_model.VIF_TYPE_BRIDGE:
return self.get_config_bridge(instance,
network, mapping,
- image_meta)
+ image_meta,
+ inst_type)
elif vif_type == network_model.VIF_TYPE_OVS:
return self.get_config_ovs(instance,
network, mapping,
- image_meta)
+ image_meta,
+ inst_type)
elif vif_type == network_model.VIF_TYPE_802_QBG:
return self.get_config_802qbg(instance,
network, mapping,
- image_meta)
+ image_meta,
+ inst_type)
elif vif_type == network_model.VIF_TYPE_802_QBH:
return self.get_config_802qbh(instance,
network, mapping,
- image_meta)
+ image_meta,
+ inst_type)
else:
raise exception.NovaException(
_("Unexpected vif_type=%s") % vif_type)
@@ -496,8 +510,9 @@ class LibvirtBridgeDriver(LibvirtGenericVIFDriver):
drivers which do not yet report 'vif_type' port binding.
Will be deprecated in Havana, and removed in Ixxxx."""
- def get_config(self, instance, network, mapping, image_meta):
- return self.get_config_bridge(instance, network, mapping, image_meta)
+ def get_config(self, instance, network, mapping, image_meta, inst_type):
+ return self.get_config_bridge(instance, network, mapping, image_meta,
+ inst_type)
def plug(self, instance, vif):
self.plug_bridge(instance, vif)
@@ -517,10 +532,10 @@ class LibvirtOpenVswitchDriver(LibvirtGenericVIFDriver):
def get_ovs_interfaceid(self, mapping):
return mapping.get('ovs_interfaceid') or mapping['vif_uuid']
- def get_config(self, instance, network, mapping, image_meta):
+ def get_config(self, instance, network, mapping, image_meta, inst_type):
return self.get_config_ovs_ethernet(instance,
network, mapping,
- image_meta)
+ image_meta, inst_type)
def plug(self, instance, vif):
self.plug_ovs_ethernet(instance, vif)
@@ -540,10 +555,11 @@ class LibvirtHybridOVSBridgeDriver(LibvirtGenericVIFDriver):
def get_ovs_interfaceid(self, mapping):
return mapping.get('ovs_interfaceid') or mapping['vif_uuid']
- def get_config(self, instance, network, mapping, image_meta):
+ def get_config(self, instance, network, mapping, image_meta, inst_type):
return self.get_config_ovs_hybrid(instance,
network, mapping,
- image_meta)
+ image_meta,
+ inst_type)
def plug(self, instance, vif):
return self.plug_ovs_hybrid(instance, vif)
@@ -563,10 +579,11 @@ class LibvirtOpenVswitchVirtualPortDriver(LibvirtGenericVIFDriver):
def get_ovs_interfaceid(self, mapping):
return mapping.get('ovs_interfaceid') or mapping['vif_uuid']
- def get_config(self, instance, network, mapping, image_meta):
+ def get_config(self, instance, network, mapping, image_meta, inst_type):
return self.get_config_ovs_bridge(instance,
network, mapping,
- image_meta)
+ image_meta,
+ inst_type)
def plug(self, instance, vif):
return self.plug_ovs_bridge(instance, vif)
@@ -584,12 +601,13 @@ class QuantumLinuxBridgeVIFDriver(LibvirtGenericVIFDriver):
def_bridge = ("brq" + network['id'])[:network_model.NIC_NAME_LEN]
return network.get('bridge') or def_bridge
- def get_config(self, instance, network, mapping, image_meta):
+ def get_config(self, instance, network, mapping, image_meta, inst_type):
# In order for libvirt to make use of the bridge name then it has
# to ensure that the bridge exists
if 'should_create_bridge' not in mapping:
mapping['should_create_bridge'] = True
- return self.get_config_bridge(instance, network, mapping, image_meta)
+ return self.get_config_bridge(instance, network, mapping, image_meta,
+ inst_type)
def plug(self, instance, vif):
self.plug_bridge(instance, vif)