Skip to content

Commit d390354

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "catch libvirt exception when nodedev not found."
2 parents bcd94d1 + af80c3f commit d390354

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16912,6 +16912,22 @@ def test_get_pcinet_info(self):
1691216912
mock_get_net_name.assert_called_once_with(parent_address)
1691316913
mock_dev_lookup.assert_called_once_with(dev_name)
1691416914

16915+
def test_get_pcinet_info_raises(self):
16916+
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
16917+
dev_name = "net_enp2s2_02_9a_a1_37_be_54"
16918+
parent_address = "pci_0000_04_11_7"
16919+
16920+
with mock.patch.object(pci_utils, 'get_net_name_by_vf_pci_address',
16921+
return_value=dev_name) as mock_get_net_name, \
16922+
mock.patch.object(
16923+
drvr._host, 'device_lookup_by_name',
16924+
side_effect=fakelibvirt.libvirtError("message")
16925+
) as mock_dev_lookup:
16926+
actualvf = drvr._get_pcinet_info(parent_address)
16927+
self.assertIsNone(actualvf)
16928+
mock_get_net_name.assert_called_once_with(parent_address)
16929+
mock_dev_lookup.assert_called_once_with(dev_name)
16930+
1691516931
@mock.patch.object(pci_utils, 'get_ifname_by_pci_address')
1691616932
def test_get_pcidev_info_non_nic(self, mock_get_ifname):
1691716933
self.stub_out('nova.virt.libvirt.host.Host.device_lookup_by_name',

nova/virt/libvirt/driver.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6894,9 +6894,13 @@ def _get_pcinet_info(self, vf_address):
68946894
"""Returns a dict of NET device."""
68956895
devname = pci_utils.get_net_name_by_vf_pci_address(vf_address)
68966896
if not devname:
6897-
return
6897+
return None
68986898

6899-
virtdev = self._host.device_lookup_by_name(devname)
6899+
try:
6900+
virtdev = self._host.device_lookup_by_name(devname)
6901+
except libvirt.libvirtError as ex:
6902+
LOG.warning(ex)
6903+
return None
69006904
xmlstr = virtdev.XMLDesc(0)
69016905
cfgdev = vconfig.LibvirtConfigNodeDevice()
69026906
cfgdev.parse_str(xmlstr)

0 commit comments

Comments
 (0)