summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-08-24 21:37:31 +0000
committerGerrit Code Review <review@openstack.org>2012-08-24 21:37:31 +0000
commitad1d2bde4841f54a64ca9b44860efcb7de35b6b2 (patch)
treec631aa93cfbb8e403cab31732ef32955be04d6f6 /nova
parente2804797dc5eaa619d38e5d7f96d5baa8eaaf467 (diff)
parentee7b56fd1902a8b16d555fe4680ba146ed3a9510 (diff)
downloadnova-ad1d2bde4841f54a64ca9b44860efcb7de35b6b2.tar.gz
nova-ad1d2bde4841f54a64ca9b44860efcb7de35b6b2.tar.xz
nova-ad1d2bde4841f54a64ca9b44860efcb7de35b6b2.zip
Merge "Ensure hairpin_mode is set whenever vifs is added to bridge."
Diffstat (limited to 'nova')
-rw-r--r--nova/virt/libvirt/driver.py12
1 files changed, 5 insertions, 7 deletions
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index c4ebcf931..e23782091 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -1014,8 +1014,8 @@ class LibvirtDriver(driver.ComputeDriver):
def poll_rescued_instances(self, timeout):
pass
- def _enable_hairpin(self, instance):
- interfaces = self.get_interfaces(instance['name'])
+ def _enable_hairpin(self, xml):
+ interfaces = self.get_interfaces(xml)
for interface in interfaces:
utils.execute('tee',
'/sys/class/net/%s/brport/hairpin_mode' % interface,
@@ -1846,6 +1846,7 @@ class LibvirtDriver(driver.ComputeDriver):
if xml:
domain = self._conn.defineXML(xml)
domain.createWithFlags(launch_flags)
+ self._enable_hairpin(domain.XMLDesc(0))
return domain
def _create_domain_and_network(self, xml, instance, network_info,
@@ -1866,7 +1867,6 @@ class LibvirtDriver(driver.ComputeDriver):
self.firewall_driver.setup_basic_filtering(instance, network_info)
self.firewall_driver.prepare_instance_filter(instance, network_info)
domain = self._create_domain(xml)
- self._enable_hairpin(instance)
self.firewall_driver.apply_instance_filter(instance, network_info)
return domain
@@ -1908,14 +1908,12 @@ class LibvirtDriver(driver.ComputeDriver):
[target.get("dev")
for target in doc.findall('devices/disk/target')])
- def get_interfaces(self, instance_name):
+ def get_interfaces(self, xml):
"""
- Note that this function takes an instance name.
+ Note that this function takes an domain xml.
Returns a list of all network interfaces for this instance.
"""
- domain = self._lookup_by_name(instance_name)
- xml = domain.XMLDesc(0)
doc = None
try: