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