Skip to content

Commit 8097c2b

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "libvirt: make mdev types name attribute be optional" into stable/victoria
2 parents d218250 + b87ced4 commit 8097c2b

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

nova/tests/unit/virt/libvirt/test_driver.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,29 @@
347347
</type>
348348
</capability>
349349
</capability>
350+
</device>""",
351+
"pci_0000_06_00_1": """
352+
<device>
353+
<name>pci_0000_06_00_1</name>
354+
<path>/sys/devices/pci0000:00/0000:00:06.1</path>
355+
<parent></parent>
356+
<driver>
357+
<name>i915</name>
358+
</driver>
359+
<capability type="pci">
360+
<domain>0</domain>
361+
<bus>6</bus>
362+
<slot>0</slot>
363+
<function>1</function>
364+
<product id="0x591d">HD Graphics P630</product>
365+
<vendor id="0x8086">Intel Corporation</vendor>
366+
<capability type='mdev_types'>
367+
<type id='i915-GVTg_V5_8'>
368+
<deviceAPI>vfio-pci</deviceAPI>
369+
<availableInstances>2</availableInstances>
370+
</type>
371+
</capability>
372+
</capability>
350373
</device>""",
351374
"mdev_4b20d080_1b54_4048_85b3_a6a62d165c01": """
352375
<device>
@@ -25127,6 +25150,28 @@ def fake_nodeDeviceLookupByName(name):
2512725150
self.assertEqual([],
2512825151
drvr._get_mdev_capable_devices(types=['nvidia-12']))
2512925152

25153+
@mock.patch.object(host.Host, 'device_lookup_by_name')
25154+
def test_get_mdev_capabilities_for_dev_name_optional(
25155+
self, device_lookup_by_name):
25156+
# We use another PCI device that doesn't provide a name attribute for
25157+
# each mdev type.
25158+
def fake_nodeDeviceLookupByName(name):
25159+
return FakeNodeDevice(_fake_NodeDevXml[name])
25160+
device_lookup_by_name.side_effect = fake_nodeDeviceLookupByName
25161+
25162+
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
25163+
25164+
expected = {"dev_id": "pci_0000_06_00_1",
25165+
"vendor_id": 0x8086,
25166+
"types": {'i915-GVTg_V5_8': {'availableInstances': 2,
25167+
'name': None,
25168+
'deviceAPI': 'vfio-pci'},
25169+
}
25170+
}
25171+
self.assertEqual(
25172+
expected,
25173+
drvr._get_mdev_capabilities_for_dev("pci_0000_06_00_1"))
25174+
2513025175
@mock.patch.object(host.Host, 'device_lookup_by_name')
2513125176
@mock.patch.object(host.Host, 'list_mediated_devices')
2513225177
def test_get_mediated_devices(self, list_mediated_devices,

nova/virt/libvirt/driver.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7295,7 +7295,8 @@ def _get_mdev_capabilities_for_dev(self, devname, types=None):
72957295
if not types or cap['type'] in types:
72967296
device["types"].update({cap['type']: {
72977297
'availableInstances': cap['availableInstances'],
7298-
'name': cap['name'],
7298+
# This attribute is optional
7299+
'name': cap.get('name'),
72997300
'deviceAPI': cap['deviceAPI']}})
73007301
return device
73017302

0 commit comments

Comments
 (0)