Check for allocated or claimed PCI status in DB

Due to the periodic update of the PCI status there is a potential when
checking the pci device status after a live-migration it may still be
claimed instead of allocated. Updated the DB query based on if sr-iov
hotplugging is enabled to check for either allocated or claimed.

Change-Id: I73c6114a67039947d30f11cb6fb3abbbdbce19ca
This commit is contained in:
James Parker 2022-03-02 15:29:53 -05:00
parent 4b48bd2b41
commit d8dde5e6d1
2 changed files with 14 additions and 4 deletions

View File

@ -452,7 +452,7 @@ class SRIOVMigration(SRIOVBase):
db = CONF.whitebox_database.nova_cell1_db_name
with db_client.cursor(db) as cursor:
cursor.execute('select COUNT(*) from pci_devices WHERE '
'status = "%s"' % status)
'status REGEXP "%s"' % status)
data = cursor.fetchall()
return data[0]['COUNT(*)']
@ -461,6 +461,11 @@ class SRIOVMigration(SRIOVBase):
:param vnic_type: str, vnic_type to use when creating sr-iov port
"""
if CONF.compute_feature_enabled.sriov_hotplug:
pci_device_status_regex = 'allocated'
else:
pci_device_status_regex = 'allocated|claimed'
net_vlan = \
CONF.network_feature_enabled.provider_net_base_segmentation_id
flavor = self.create_flavor()
@ -499,7 +504,8 @@ class SRIOVMigration(SRIOVBase):
# Validate the total allocation of pci devices is one and only one
# after instance migration
pci_allocated_count = self._get_pci_status_count('allocated')
pci_allocated_count = self._get_pci_status_count(
pci_device_status_regex)
self.assertEqual(pci_allocated_count, 1, 'Total allocated pci devices '
'after first migration should be 1 but instead '
'is %s' % pci_allocated_count)
@ -527,7 +533,8 @@ class SRIOVMigration(SRIOVBase):
# Confirm total port allocations still remains one after final
# migration
pci_allocated_count = self._get_pci_status_count('allocated')
pci_allocated_count = self._get_pci_status_count(
pci_device_status_regex)
self.assertEqual(pci_allocated_count, 1, 'Total allocated pci devices '
'after second migration should be 1 but instead '
'is %s' % pci_allocated_count)

View File

@ -259,5 +259,8 @@ compute_features_group_opts = [
help="If false, skip virtio rng tests"),
cfg.BoolOpt('rbd_download',
default=False,
help="If false, skip rbd direct download tests")
help="If false, skip rbd direct download tests"),
cfg.BoolOpt('sriov_hotplug',
default=True,
help="Sriov hotplugging is supported in the deployment")
]