|
17 | 17 |
|
18 | 18 | from oslo_config import cfg
|
19 | 19 | from oslo_serialization import jsonutils
|
| 20 | +from oslo_utils.fixture import uuidsentinel as uuids |
20 | 21 |
|
21 | 22 | from nova import exception
|
22 | 23 | from nova import objects
|
@@ -896,6 +897,120 @@ def test_filter_pools_for_spec_ignores_rc_and_traits_in_spec(self):
|
896 | 897 |
|
897 | 898 | self.assertEqual(pools, matching_pools)
|
898 | 899 |
|
| 900 | + def test_populate_pools_metadata_from_assigned_devices(self): |
| 901 | + device_spec = [ |
| 902 | + jsonutils.dumps( |
| 903 | + { |
| 904 | + "address": "0000:81:00.*", |
| 905 | + } |
| 906 | + ), |
| 907 | + ] |
| 908 | + self.flags(device_spec=device_spec, group="pci") |
| 909 | + dev_filter = whitelist.Whitelist(device_spec) |
| 910 | + pci_stats = stats.PciDeviceStats( |
| 911 | + objects.NUMATopology(), |
| 912 | + dev_filter=dev_filter) |
| 913 | + pci_dev1 = objects.PciDevice( |
| 914 | + vendor_id="dead", |
| 915 | + product_id="beef", |
| 916 | + address="0000:81:00.1", |
| 917 | + parent_addr="0000:81:00.0", |
| 918 | + numa_node=0, |
| 919 | + dev_type="type-VF", |
| 920 | + ) |
| 921 | + pci_dev2 = objects.PciDevice( |
| 922 | + vendor_id="dead", |
| 923 | + product_id="beef", |
| 924 | + address="0000:81:00.2", |
| 925 | + parent_addr="0000:81:00.0", |
| 926 | + numa_node=0, |
| 927 | + dev_type="type-VF", |
| 928 | + ) |
| 929 | + pci_stats.add_device(pci_dev1) |
| 930 | + pci_dev1.extra_info = {'rp_uuid': uuids.rp1} |
| 931 | + pci_stats.add_device(pci_dev2) |
| 932 | + pci_dev2.extra_info = {'rp_uuid': uuids.rp1} |
| 933 | + |
| 934 | + self.assertEqual(1, len(pci_stats.pools)) |
| 935 | + |
| 936 | + pci_stats.populate_pools_metadata_from_assigned_devices() |
| 937 | + |
| 938 | + self.assertEqual(uuids.rp1, pci_stats.pools[0]['rp_uuid']) |
| 939 | + |
| 940 | + def test_populate_pools_metadata_from_assigned_devices_device_without_rp( |
| 941 | + self |
| 942 | + ): |
| 943 | + device_spec = [ |
| 944 | + jsonutils.dumps( |
| 945 | + { |
| 946 | + "address": "0000:81:00.*", |
| 947 | + } |
| 948 | + ), |
| 949 | + ] |
| 950 | + self.flags(device_spec=device_spec, group="pci") |
| 951 | + dev_filter = whitelist.Whitelist(device_spec) |
| 952 | + pci_stats = stats.PciDeviceStats( |
| 953 | + objects.NUMATopology(), |
| 954 | + dev_filter=dev_filter) |
| 955 | + pci_dev1 = objects.PciDevice( |
| 956 | + vendor_id="dead", |
| 957 | + product_id="beef", |
| 958 | + address="0000:81:00.1", |
| 959 | + parent_addr="0000:81:00.0", |
| 960 | + numa_node=0, |
| 961 | + dev_type="type-VF", |
| 962 | + ) |
| 963 | + pci_stats.add_device(pci_dev1) |
| 964 | + |
| 965 | + self.assertEqual(1, len(pci_stats.pools)) |
| 966 | + |
| 967 | + pci_stats.populate_pools_metadata_from_assigned_devices() |
| 968 | + |
| 969 | + self.assertNotIn('rp_uuid', pci_stats.pools[0]) |
| 970 | + |
| 971 | + def test_populate_pools_metadata_from_assigned_devices_multiple_rp(self): |
| 972 | + device_spec = [ |
| 973 | + jsonutils.dumps( |
| 974 | + { |
| 975 | + "address": "0000:81:00.*", |
| 976 | + } |
| 977 | + ), |
| 978 | + ] |
| 979 | + self.flags(device_spec=device_spec, group="pci") |
| 980 | + dev_filter = whitelist.Whitelist(device_spec) |
| 981 | + pci_stats = stats.PciDeviceStats( |
| 982 | + objects.NUMATopology(), |
| 983 | + dev_filter=dev_filter) |
| 984 | + pci_dev1 = objects.PciDevice( |
| 985 | + compute_node_id=1, |
| 986 | + vendor_id="dead", |
| 987 | + product_id="beef", |
| 988 | + address="0000:81:00.1", |
| 989 | + parent_addr="0000:81:00.0", |
| 990 | + numa_node=0, |
| 991 | + dev_type="type-VF", |
| 992 | + ) |
| 993 | + pci_dev2 = objects.PciDevice( |
| 994 | + compute_node_id=1, |
| 995 | + vendor_id="dead", |
| 996 | + product_id="beef", |
| 997 | + address="0000:81:00.2", |
| 998 | + parent_addr="0000:81:00.0", |
| 999 | + numa_node=0, |
| 1000 | + dev_type="type-VF", |
| 1001 | + ) |
| 1002 | + pci_stats.add_device(pci_dev1) |
| 1003 | + pci_dev1.extra_info = {'rp_uuid': uuids.rp1} |
| 1004 | + pci_stats.add_device(pci_dev2) |
| 1005 | + pci_dev2.extra_info = {'rp_uuid': uuids.rp2} |
| 1006 | + |
| 1007 | + self.assertEqual(1, len(pci_stats.pools)) |
| 1008 | + |
| 1009 | + self.assertRaises( |
| 1010 | + ValueError, |
| 1011 | + pci_stats.populate_pools_metadata_from_assigned_devices, |
| 1012 | + ) |
| 1013 | + |
899 | 1014 |
|
900 | 1015 | class PciDeviceVFPFStatsTestCase(test.NoDBTestCase):
|
901 | 1016 |
|
|
0 commit comments