summaryrefslogtreecommitdiff
path: root/nova/virt/libvirt
diff options
context:
space:
mode:
authorYassine Lamgarchal <yassine.lamgarchal@enovance.com>2013-06-10 14:47:57 +0200
committerMathieu Gagné <mgagne@iweb.com>2013-07-23 21:08:26 -0400
commit2c1061df8e4ac1a228d79b5ed9c331035fa08d72 (patch)
tree902a847ae9c3263b626369bd4359214fcefeaf8a /nova/virt/libvirt
parent78ebf1a9efbf1cacbd1e993fe60b275dc7aff029 (diff)
downloadnova-2c1061df8e4ac1a228d79b5ed9c331035fa08d72.tar.gz
Add inst_type parameter
Add inst_type parameter in order to generate the bandwidth tag into the libvirt configuration. Change-Id: I63c1fb51ea637d461755b309c7464f4b4d49a4b2 Fixes: bug #1185030 (cherry picked from commit 08f8773b9a4fe7fea248b4501230ebd6e6ef2fde)
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 ed8e7a1dbc..fd4f5c4dbc 100755
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -2256,7 +2256,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)