pci passthrough fails while trying to decode extra_info

pci device with empty extra_info should use null dict instead of
None. keep the init of extra_info to make db could access it.

Closes-Bug: #1223559

Change-Id: I2e57eb53dfd4f5168d52dc94c2057fc575458aee
Signed-off-by: Yongli He <yongli.he@intel.com>
This commit is contained in:
He Yongli
2013-09-13 17:35:59 +08:00
parent 2f6022f6bf
commit 0663778c53
2 changed files with 16 additions and 2 deletions

View File

@@ -88,7 +88,7 @@ class _TestPciDeviceObject(object):
self.assertEqual(self.pci_device.product_id, 'p')
self.assertEqual(self.pci_device.obj_what_changed(),
set(['compute_node_id', 'product_id', 'vendor_id',
'status', 'address']))
'status', 'address', 'extra_info']))
def test_pci_device_extra_info(self):
self.dev_dict = copy.copy(dev_dict)
@@ -242,6 +242,20 @@ class _TestPciDeviceObject(object):
'fake-uuid-3')
self.assertRemotes()
def test_save_no_extra_info(self):
return_dev = dict(fake_db_dev, status='available',
instance_uuid='fake-uuid-3')
def _fake_update(ctxt, node_id, addr, updates):
self.extra_info = updates.get('extra_info')
return return_dev
ctxt = context.get_admin_context()
self.stubs.Set(db, 'pci_device_update', _fake_update)
self.pci_device = pci_device.PciDevice.create(dev_dict)
self.pci_device.save(ctxt)
self.assertEqual(self.extra_info, '{}')
def test_save_removed(self):
ctxt = context.get_admin_context()
self._create_fake_pci_device()