diff --git a/nova/objects/migrate_data.py b/nova/objects/migrate_data.py index 073f6d5c100b..fee578080c47 100644 --- a/nova/objects/migrate_data.py +++ b/nova/objects/migrate_data.py @@ -241,10 +241,10 @@ class LibvirtLiveMigrateData(LiveMigrateData): 'bdms': fields.ListOfObjectsField('LibvirtLiveMigrateBDMInfo'), 'target_connect_addr': fields.StringField(nullable=True), 'supported_perf_events': fields.ListOfStringsField(), + # TODO(lyarwood): No longer used, drop in version 2.0 'src_supports_native_luks': fields.BooleanField(), 'dst_wants_file_backed_memory': fields.BooleanField(), - # file_backed_memory_discard is ignored unless - # dst_wants_file_backed_memory is set + # TODO(lyarwood): No longer used, drop in version 2.0 'file_backed_memory_discard': fields.BooleanField(), # TODO(artom) (src|dst)_supports_numa_live_migration are only used as # flags to indicate that the compute host is new enough to perform a diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 3ea4a4e57d6d..e168b36980fd 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -3446,32 +3446,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, self.assertTrue(result.filesource) self.assertTrue(result.allocateimmediate) - @mock.patch.object(fakelibvirt.Connection, 'getLibVersion') - def test_get_guest_memory_backing_config_file_backed_discard(self, - mock_lib_version): - self.flags(file_backed_memory=1024, group='libvirt') - - mock_lib_version.return_value = versionutils.convert_version_to_int( - libvirt_driver.MIN_LIBVIRT_FILE_BACKED_DISCARD_VERSION) - - result = self._test_get_guest_memory_backing_config( - None, None, None - ) - self.assertTrue(result.discard) - - @mock.patch.object(fakelibvirt.Connection, 'getLibVersion') - def test_get_guest_memory_backing_config_file_backed_discard_libvirt(self, - mock_lib_version): - self.flags(file_backed_memory=1024, group='libvirt') - - mock_lib_version.return_value = versionutils.convert_version_to_int( - libvirt_driver.MIN_LIBVIRT_FILE_BACKED_DISCARD_VERSION) - 1 - - result = self._test_get_guest_memory_backing_config( - None, None, None - ) - self.assertFalse(result.discard) - def test_get_guest_memory_backing_config_file_backed_hugepages(self): self.flags(file_backed_memory=1024, group="libvirt") host_topology = objects.NUMATopology(cells=[ @@ -10770,7 +10744,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, 'block_migration': True, 'is_volume_backed': False, 'dst_wants_file_backed_memory': False, - 'file_backed_memory_discard': False, 'graphics_listen_addr_spice': '127.0.0.1', 'graphics_listen_addr_vnc': '127.0.0.1', 'serial_listen_addr': None}, @@ -10807,7 +10780,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, 'block_migration': True, 'is_volume_backed': False, 'dst_wants_file_backed_memory': False, - 'file_backed_memory_discard': False, 'graphics_listen_addr_spice': '127.0.0.1', 'graphics_listen_addr_vnc': '127.0.0.1', 'serial_listen_addr': None}, @@ -10841,7 +10813,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, 'disk_available_mb': 409600, 'is_volume_backed': False, 'dst_wants_file_backed_memory': False, - 'file_backed_memory_discard': False, 'graphics_listen_addr_spice': '127.0.0.1', 'graphics_listen_addr_vnc': '127.0.0.1', 'serial_listen_addr': None}, @@ -10916,7 +10887,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, 'disk_available_mb': 1024, 'is_volume_backed': False, 'dst_wants_file_backed_memory': False, - 'file_backed_memory_discard': False, 'graphics_listen_addr_spice': '127.0.0.1', 'graphics_listen_addr_vnc': '127.0.0.1', 'serial_listen_addr': None}, @@ -10982,7 +10952,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, 'disk_available_mb': 1024, 'is_volume_backed': False, 'dst_wants_file_backed_memory': False, - 'file_backed_memory_discard': False, 'graphics_listen_addr_spice': '127.0.0.1', 'graphics_listen_addr_vnc': '127.0.0.1', 'serial_listen_addr': None}, @@ -11016,58 +10985,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, self.assertTrue(return_value.dst_wants_file_backed_memory) - @mock.patch.object(fakelibvirt.Connection, 'getLibVersion') - @mock.patch.object(libvirt_driver.LibvirtDriver, - '_create_shared_storage_test_file') - @mock.patch.object(fakelibvirt.Connection, 'compareCPU') - def _test_check_can_live_migrate_dest_file_backed_discard( - self, libvirt_version, mock_cpu, mock_test_file, - mock_lib_version): - - self.flags(file_backed_memory=1024, group='libvirt') - - mock_lib_version.return_value = libvirt_version - - instance_ref = objects.Instance(**self.test_instance) - instance_ref.vcpu_model = test_vcpu_model.fake_vcpumodel - - drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) - compute_info = {'disk_available_least': 400, - 'cpu_info': 'asdf', - } - - filename = "file" - - # _check_cpu_match - mock_cpu.return_value = 1 - # mounted_on_same_shared_storage - mock_test_file.return_value = filename - # No need for the src_compute_info - return_value = drvr.check_can_live_migrate_destination(self.context, - instance_ref, None, compute_info, False) - - return return_value - - def test_check_can_live_migrate_dest_file_backed_discard(self): - libvirt_version = versionutils.convert_version_to_int( - libvirt_driver.MIN_LIBVIRT_FILE_BACKED_DISCARD_VERSION) - - data = self._test_check_can_live_migrate_dest_file_backed_discard( - libvirt_version) - - self.assertTrue(data.dst_wants_file_backed_memory) - self.assertTrue(data.file_backed_memory_discard) - - def test_check_can_live_migrate_dest_file_backed_discard_bad_libvirt(self): - libvirt_version = versionutils.convert_version_to_int( - libvirt_driver.MIN_LIBVIRT_FILE_BACKED_DISCARD_VERSION) - 1 - - data = self._test_check_can_live_migrate_dest_file_backed_discard( - libvirt_version) - - self.assertTrue(data.dst_wants_file_backed_memory) - self.assertFalse(data.file_backed_memory_discard) - @mock.patch.object(fakelibvirt.Connection, 'compareCPU') def test_check_can_live_migrate_dest_incompatible_cpu_raises( self, mock_cpu): diff --git a/nova/tests/unit/virt/libvirt/test_migration.py b/nova/tests/unit/virt/libvirt/test_migration.py index d4fba48397de..6166458ccc38 100644 --- a/nova/tests/unit/virt/libvirt/test_migration.py +++ b/nova/tests/unit/virt/libvirt/test_migration.py @@ -656,6 +656,7 @@ class UtilityMigrationTestCase(test.NoDBTestCase): + """ doc = etree.fromstring(xml) @@ -679,6 +680,7 @@ class UtilityMigrationTestCase(test.NoDBTestCase): + """) @@ -691,78 +693,6 @@ class UtilityMigrationTestCase(test.NoDBTestCase): - -""" - doc = etree.fromstring(xml) - res = etree.tostring(migration._update_memory_backing_xml(doc, data), - encoding='unicode') - - self.assertXmlEqual(res, """ - - - - - -""") - - def test_update_memory_backing_discard_add(self): - data = objects.LibvirtLiveMigrateData( - dst_wants_file_backed_memory=True, file_backed_memory_discard=True) - - xml = """ - - - - - -""" - doc = etree.fromstring(xml) - res = etree.tostring(migration._update_memory_backing_xml(doc, data), - encoding='unicode') - - self.assertXmlEqual(res, """ - - - - - - -""") - - def test_update_memory_backing_discard_remove(self): - data = objects.LibvirtLiveMigrateData( - dst_wants_file_backed_memory=True, - file_backed_memory_discard=False) - - xml = """ - - - - - - -""" - doc = etree.fromstring(xml) - res = etree.tostring(migration._update_memory_backing_xml(doc, data), - encoding='unicode') - - self.assertXmlEqual(res, """ - - - - - -""") - - def test_update_memory_backing_discard_keep(self): - data = objects.LibvirtLiveMigrateData( - dst_wants_file_backed_memory=True, file_backed_memory_discard=True) - - xml = """ - - - - """ diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index b00699e29350..e00dd77609d4 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -249,7 +249,6 @@ VGPU_RESOURCE_SEMAPHORE = 'vgpu_resources' LIBVIRT_PERF_EVENT_PREFIX = 'VIR_PERF_PARAM_' -MIN_LIBVIRT_FILE_BACKED_DISCARD_VERSION = (4, 4, 0) MIN_LIBVIRT_NATIVE_TLS_VERSION = (4, 4, 0) MIN_QEMU_NATIVE_TLS_VERSION = (2, 11, 0) @@ -5661,9 +5660,7 @@ class LibvirtDriver(driver.ComputeDriver): membacking.filesource = True membacking.sharedaccess = True membacking.allocateimmediate = True - if self._host.has_min_version( - MIN_LIBVIRT_FILE_BACKED_DISCARD_VERSION): - membacking.discard = True + membacking.discard = True if self._sev_enabled(flavor, image_meta): if not membacking: membacking = vconfig.LibvirtConfigGuestMemoryBacking() @@ -8580,9 +8577,6 @@ class LibvirtDriver(driver.ComputeDriver): data.disk_over_commit = disk_over_commit data.disk_available_mb = disk_available_mb data.dst_wants_file_backed_memory = CONF.libvirt.file_backed_memory > 0 - data.file_backed_memory_discard = (CONF.libvirt.file_backed_memory and - self._host.has_min_version( - MIN_LIBVIRT_FILE_BACKED_DISCARD_VERSION)) # TODO(artom) Set to indicate that the destination (us) can perform a # NUMA-aware live migration. NUMA-aware live migration will become diff --git a/nova/virt/libvirt/migration.py b/nova/virt/libvirt/migration.py index 9543adda7ad5..36ee7168ef17 100644 --- a/nova/virt/libvirt/migration.py +++ b/nova/virt/libvirt/migration.py @@ -296,16 +296,12 @@ def _update_memory_backing_xml(xml_doc, migrate_data): """ old_xml_has_memory_backing = True file_backed = False - discard = False memory_backing = xml_doc.findall('./memoryBacking') if 'dst_wants_file_backed_memory' in migrate_data: file_backed = migrate_data.dst_wants_file_backed_memory - if 'file_backed_memory_discard' in migrate_data: - discard = migrate_data.file_backed_memory_discard - if not memory_backing: # Create memoryBacking element memory_backing = etree.Element("memoryBacking") @@ -326,9 +322,7 @@ def _update_memory_backing_xml(xml_doc, migrate_data): memory_backing.append(etree.Element("source", type="file")) memory_backing.append(etree.Element("access", mode="shared")) memory_backing.append(etree.Element("allocation", mode="immediate")) - - if discard: - memory_backing.append(etree.Element("discard")) + memory_backing.append(etree.Element("discard")) if not old_xml_has_memory_backing: xml_doc.append(memory_backing)