diff --git a/nova/privsep/libvirt.py b/nova/privsep/libvirt.py
index 05a6c8ba4cea..9f4bb3b0503c 100644
--- a/nova/privsep/libvirt.py
+++ b/nova/privsep/libvirt.py
@@ -113,13 +113,6 @@ def ploop_restore_descriptor(image_dir, base_delta, fmt):
check_exit_code=True)
-@nova.privsep.sys_admin_pctxt.entrypoint
-def enable_hairpin(interface):
- """Enable hairpin mode for a libvirt guest."""
- with open('/sys/class/net/%s/brport/hairpin_mode' % interface, 'w') as f:
- f.write('1')
-
-
@nova.privsep.sys_admin_pctxt.entrypoint
def plug_infiniband_vif(vnic_mac, device_id, fabric, net_model, pci_slot):
processutils.execute('ebrctl', 'add-port', vnic_mac, device_id,
diff --git a/nova/tests/unit/privsep/test_libvirt.py b/nova/tests/unit/privsep/test_libvirt.py
index 49a24decb073..cd6cc17842af 100644
--- a/nova/tests/unit/privsep/test_libvirt.py
+++ b/nova/tests/unit/privsep/test_libvirt.py
@@ -76,18 +76,6 @@ class LibvirtTestCase(test.NoDBTestCase):
'ploop', 'restore-descriptor', '-f', 'raw',
'/img/dir', 'imagefile', check_exit_code=True)
- def test_enable_hairping(self):
- mock_open = mock.mock_open()
- with mock.patch.object(six.moves.builtins, 'open',
- new=mock_open) as mock_open:
- nova.privsep.libvirt.enable_hairpin('eth0')
-
- handle = mock_open()
- self.assertTrue(mock.call('/sys/class/net/eth0/brport/'
- 'hairpin_mode', 'w') in
- mock_open.mock_calls)
- handle.write.assert_called_with('1')
-
@mock.patch('oslo_concurrency.processutils.execute')
def test_plug_infiniband_vif(self, mock_execute):
nova.privsep.libvirt.plug_infiniband_vif('fakemac', 'devid', 'fabric',
diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py
index fbd56bf53908..6b10d56f4b21 100644
--- a/nova/tests/unit/virt/libvirt/test_driver.py
+++ b/nova/tests/unit/virt/libvirt/test_driver.py
@@ -10561,7 +10561,7 @@ class LibvirtConnTestCase(test.NoDBTestCase,
"{}")
disks_xml = ''
for dsk in disks:
- if dsk['type'] is not 'network':
+ if dsk['type'] != 'network':
disks_xml = ''.join([disks_xml,
""
""
@@ -17870,40 +17870,6 @@ class LibvirtConnTestCase(test.NoDBTestCase,
domain=fake_domain)
self.assertTrue(self.log_error_called)
- @mock.patch('nova.privsep.libvirt.enable_hairpin')
- def test_create_domain_enable_hairpin_fails(self, mock_writefile):
- """Tests that the xml is logged when enabling hairpin mode for the
- domain fails.
- """
- # Guest.enable_hairpin is only called for nova-network.
- # TODO(mikal): remove this test when nova-net goes away
- self.flags(use_neutron=False)
- fake_xml = "this is a test"
- fake_domain = FakeVirtDomain(fake_xml)
-
- mock_writefile.side_effect = IOError
-
- def fake_get_interfaces(*args):
- return ["dev"]
-
- self.log_error_called = False
-
- def fake_error(msg, *args, **kwargs):
- self.log_error_called = True
- self.assertIn(fake_xml, msg % args)
-
- self.stub_out('nova.virt.libvirt.guest.LOG.error', fake_error)
-
- self.create_fake_libvirt_mock()
- drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
- self.stub_out(
- 'nova.virt.libvirt.guest.Guest.get_interfaces',
- fake_get_interfaces)
-
- self.assertRaises(IOError, drvr._create_domain, domain=fake_domain,
- power_on=False)
- self.assertTrue(self.log_error_called)
-
def test_get_vnc_console(self):
instance = objects.Instance(**self.test_instance)
dummyxml = ("instance-0000000a"
@@ -21005,9 +20971,6 @@ class LibvirtDriverTestCase(test.NoDBTestCase, TraitsComparisonMixin):
external_events)
return mock.MagicMock()
- def fake_enable_hairpin(self):
- pass
-
def fake_get_info(self, instance):
if powered_on:
return hardware.InstanceInfo(state=power_state.RUNNING)
@@ -21029,8 +20992,6 @@ class LibvirtDriverTestCase(test.NoDBTestCase, TraitsComparisonMixin):
fw)
self.stub_out('nova.virt.libvirt.driver.LibvirtDriver.'
'_create_domain_and_network', fake_create_domain)
- self.stub_out('nova.virt.libvirt.guest.Guest.enable_hairpin',
- fake_enable_hairpin)
self.stub_out('nova.virt.libvirt.driver.LibvirtDriver.get_info',
fake_get_info)
self.stub_out('nova.utils.get_image_from_system_metadata',
diff --git a/nova/tests/unit/virt/libvirt/test_guest.py b/nova/tests/unit/virt/libvirt/test_guest.py
index b11a5f46a13b..fce31f56f6ce 100644
--- a/nova/tests/unit/virt/libvirt/test_guest.py
+++ b/nova/tests/unit/virt/libvirt/test_guest.py
@@ -89,27 +89,6 @@ class GuestTestCase(test.NoDBTestCase):
self.assertRaises(test.TestingException, self.guest.launch)
self.assertEqual(1, mock_safe_decode.called)
- @mock.patch('nova.privsep.libvirt.enable_hairpin')
- @mock.patch.object(libvirt_guest.Guest, 'get_interfaces')
- def test_enable_hairpin(self, mock_get_interfaces, mock_writefile):
- mock_get_interfaces.return_value = ["vnet0", "vnet1"]
- self.guest.enable_hairpin()
- mock_writefile.assert_has_calls([
- mock.call('vnet0'),
- mock.call('vnet1')]
- )
-
- @mock.patch.object(encodeutils, 'safe_decode')
- @mock.patch('nova.privsep.libvirt.enable_hairpin')
- @mock.patch.object(libvirt_guest.Guest, 'get_interfaces')
- def test_enable_hairpin_exception(self, mock_get_interfaces,
- mock_writefile, mock_safe_decode):
- mock_get_interfaces.return_value = ["foo"]
- mock_writefile.side_effect = test.TestingException
-
- self.assertRaises(test.TestingException, self.guest.enable_hairpin)
- self.assertEqual(1, mock_safe_decode.called)
-
def test_get_interfaces(self):
self.domain.XMLDesc.return_value = """
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index ca15d7e534e0..95429576a50a 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -6146,9 +6146,6 @@ class LibvirtDriver(driver.ComputeDriver):
if power_on or pause:
guest.launch(pause=pause)
- if not utils.is_neutron():
- guest.enable_hairpin()
-
return guest
def _neutron_failed_callback(self, event_name, instance):
@@ -9337,7 +9334,7 @@ class LibvirtDriver(driver.ComputeDriver):
# being left in an ERROR state and still marked on the source.
try:
self._disconnect_volume(context, connection_info, instance)
- except Exception as ex:
+ except Exception:
volume_id = driver_block_device.get_volume_id(connection_info)
LOG.exception("Ignoring exception while attempting to "
"disconnect volume %s from the source host "
diff --git a/nova/virt/libvirt/guest.py b/nova/virt/libvirt/guest.py
index 976bca2717c2..e8d4d637a222 100644
--- a/nova/virt/libvirt/guest.py
+++ b/nova/virt/libvirt/guest.py
@@ -40,7 +40,6 @@ import six
from nova.compute import power_state
from nova import exception
from nova.i18n import _
-import nova.privsep.libvirt
from nova.virt import hardware
from nova.virt.libvirt import config as vconfig
@@ -194,17 +193,6 @@ class Guest(object):
"""Resumes a paused guest."""
self._domain.resume()
- def enable_hairpin(self):
- """Enables hairpin mode for this guest."""
- interfaces = self.get_interfaces()
- try:
- for interface in interfaces:
- nova.privsep.libvirt.enable_hairpin(interface)
- except Exception:
- with excutils.save_and_reraise_exception():
- LOG.error('Error enabling hairpin mode with XML: %s',
- self._encoded_xml, errors='ignore')
-
def get_interfaces(self):
"""Returns a list of all network interfaces for this domain."""
doc = None