raise exception.ValidationError(detail=msg)
pci_devices = Table('pci_devices', meta, autoload=True)
+
+ # Ensure that all non-deleted PCI device records have a populated
+ # parent address. Note that we test directly against the 'type-VF'
+ # enum value to prevent issues with this migration going forward
+ # if the definition is altered.
count = select([func.count()]).select_from(pci_devices).where(and_(
pci_devices.c.deleted == 0,
- pci_devices.c.parent_addr == None)).execute().scalar() # NOQA
+ pci_devices.c.parent_addr == None,
+ pci_devices.c.dev_type == 'type-VF')).execute().scalar() # NOQA
if count > 0:
msg = WARNING_MSG % {
'count': count,
self.assertRaises(exception.ValidationError,
self.migration.upgrade, self.engine)
- def test_pci_device_not_migrated(self):
+ def test_pci_device_type_vf_not_migrated(self):
db_api.pci_device_update(self.context, 1, 'foo:bar',
{'parent_addr': None,
'compute_node_id': 1,
'address': 'foo:bar',
'vendor_id': '123',
'product_id': '456',
- 'dev_type': 'foo',
+ 'dev_type': 'type-VF',
'label': 'foobar',
'status': 'whatisthis?'})
+ # type-VF devices should have a parent_addr
self.assertRaises(exception.ValidationError,
self.migration.upgrade, self.engine)
+ def test_pci_device_type_pf_not_migrated(self):
+ db_api.pci_device_update(self.context, 1, 'foo:bar',
+ {'parent_addr': None,
+ 'compute_node_id': 1,
+ 'address': 'foo:bar',
+ 'vendor_id': '123',
+ 'product_id': '456',
+ 'dev_type': 'type-PF',
+ 'label': 'foobar',
+ 'status': 'whatisthis?'})
+ # blocker should not block on type-PF devices
+ self.migration.upgrade(self.engine)
+
+ def test_pci_device_type_pci_not_migrated(self):
+ db_api.pci_device_update(self.context, 1, 'foo:bar',
+ {'parent_addr': None,
+ 'compute_node_id': 1,
+ 'address': 'foo:bar',
+ 'vendor_id': '123',
+ 'product_id': '456',
+ 'dev_type': 'type-PCI',
+ 'label': 'foobar',
+ 'status': 'whatisthis?'})
+ # blocker should not block on type-PCI devices
+ self.migration.upgrade(self.engine)
+
def test_deleted_not_migrated(self):
cn_values = dict(vcpus=1, memory_mb=512, local_gb=10,
vcpus_used=0, memory_mb_used=256,