From e19f6fda58dc8f76dc5fe79165e5d18292af2842 Mon Sep 17 00:00:00 2001 From: Artom Lifshitz Date: Tue, 9 Mar 2021 13:36:57 -0500 Subject: [PATCH] Follow up from bp/pci-socket-affinity series This patch addresses outstanding nits from the bp/pci-socket-affinity series. The most important is how the libvirt driver handles reporting the new COMPUTE_SOCKET_PCI_NUMA_AFFINITY trait. Previously, this was done by directly adding the trait in static_traits(). This patch switches it to use driver capabilities. Change-Id: I89d742ae01d65ab4e16fd8bd86b761f4c5d54d54 --- nova/tests/unit/pci/test_manager.py | 4 +++- nova/tests/unit/virt/libvirt/test_driver.py | 7 +++++-- nova/virt/driver.py | 3 +++ nova/virt/libvirt/driver.py | 2 +- nova/virt/powervm/driver.py | 1 + 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/nova/tests/unit/pci/test_manager.py b/nova/tests/unit/pci/test_manager.py index 3bc5ae65ea..f8325c8b88 100644 --- a/nova/tests/unit/pci/test_manager.py +++ b/nova/tests/unit/pci/test_manager.py @@ -252,8 +252,10 @@ class PciDevTrackerTestCase(test.NoDBTestCase): fake_pci_devs_json = jsonutils.dumps(fake_pci_devs) tracker = manager.PciDevTracker( self.fake_context, objects.ComputeNode(id=1, numa_topology=None)) + # At this point we should have the original 3 fake devs + self.assertEqual(3, len(tracker.pci_devs)) # We expect that the device with 32bit PCI domain is ignored, so we'll - # have only the 3 original fake devs + # still have the same 3 original fake devs. tracker.update_devices_from_hypervisor_resources(fake_pci_devs_json) self.assertEqual(3, len(tracker.pci_devs)) mock_debug.assert_called_once_with( diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 4e052c4865..3ca42e88be 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -814,6 +814,11 @@ class LibvirtConnTestCase(test.NoDBTestCase, drvr.capabilities['supports_vtpm'], "Driver capabilities for 'supports_vtpm' is invalid", ) + self.assertTrue( + drvr.capabilities['supports_socket_pci_numa_affinity'], + "Driver capabilities for 'supports_socket_pci_numa_affinity' " + "is invalid", + ) def test_driver_capabilities_qcow2_with_rbd(self): self.flags(images_type='rbd', group='libvirt') @@ -965,7 +970,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, 'COMPUTE_NET_VIF_MODEL_VIRTIO': True, 'COMPUTE_SECURITY_TPM_1_2': False, 'COMPUTE_SECURITY_TPM_2_0': False, - 'COMPUTE_SOCKET_PCI_NUMA_AFFINITY': True, } static_traits = drvr.static_traits @@ -1011,7 +1015,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, 'COMPUTE_NET_VIF_MODEL_VIRTIO': True, 'COMPUTE_SECURITY_TPM_1_2': False, 'COMPUTE_SECURITY_TPM_2_0': False, - 'COMPUTE_SOCKET_PCI_NUMA_AFFINITY': True, } static_traits = drvr.static_traits diff --git a/nova/virt/driver.py b/nova/virt/driver.py index 5c96d4041a..4e1a80d173 100644 --- a/nova/virt/driver.py +++ b/nova/virt/driver.py @@ -124,6 +124,8 @@ CAPABILITY_TRAITS_MAP = { "supports_migrate_to_same_host": os_traits.COMPUTE_SAME_HOST_COLD_MIGRATE, "supports_bfv_rescue": os_traits.COMPUTE_RESCUE_BFV, "supports_secure_boot": os_traits.COMPUTE_SECURITY_UEFI_SECURE_BOOT, + "supports_socket_pci_numa_affinity": + os_traits.COMPUTE_SOCKET_PCI_NUMA_AFFINITY, } @@ -191,6 +193,7 @@ class ComputeDriver(object): "supports_bfv_rescue": False, "supports_vtpm": False, "supports_secure_boot": False, + "supports_socket_pci_numa_affinity": False, # Image type support flags "supports_image_type_aki": False, diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index b5eb984fef..a99cb3963e 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -417,6 +417,7 @@ class LibvirtDriver(driver.ComputeDriver): "supports_accelerators": True, "supports_bfv_rescue": True, "supports_vtpm": CONF.libvirt.swtpm_enabled, + "supports_socket_pci_numa_affinity": True, } super(LibvirtDriver, self).__init__(virtapi) @@ -8087,7 +8088,6 @@ class LibvirtDriver(driver.ComputeDriver): traits.update(self._get_video_model_traits()) traits.update(self._get_vif_model_traits()) traits.update(self._get_tpm_traits()) - traits.update({ot.COMPUTE_SOCKET_PCI_NUMA_AFFINITY: True}) _, invalid_traits = ot.check_traits(traits) for invalid_trait in invalid_traits: diff --git a/nova/virt/powervm/driver.py b/nova/virt/powervm/driver.py index c94dcd35f2..ec8f60226d 100644 --- a/nova/virt/powervm/driver.py +++ b/nova/virt/powervm/driver.py @@ -81,6 +81,7 @@ class PowerVMDriver(driver.ComputeDriver): 'supports_accelerators': False, 'supports_vtpm': False, 'supports_secure_boot': False, + 'supports_socket_pci_numa_affinity': False, # Supported image types "supports_image_type_aki": False,