diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-08-24 21:37:31 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-08-24 21:37:31 +0000 |
| commit | ad1d2bde4841f54a64ca9b44860efcb7de35b6b2 (patch) | |
| tree | c631aa93cfbb8e403cab31732ef32955be04d6f6 /nova | |
| parent | e2804797dc5eaa619d38e5d7f96d5baa8eaaf467 (diff) | |
| parent | ee7b56fd1902a8b16d555fe4680ba146ed3a9510 (diff) | |
| download | nova-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.py | 12 |
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: |
