libvirt: add method to get device by name to Host
Add method "lookup_device_by_name" in Host and update the driver to use it instead of calling libvirt directly. Change-Id: I1642f839c5a0c22d8dc978c2a84906e2d3d8a051
This commit is contained in:
@@ -8741,12 +8741,11 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
|
||||
def test_get_pcidev_info(self):
|
||||
|
||||
def fake_nodeDeviceLookupByName(name):
|
||||
def fake_nodeDeviceLookupByName(self, name):
|
||||
return FakeNodeDevice(_fake_NodeDevXml[name])
|
||||
|
||||
self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn')
|
||||
libvirt_driver.LibvirtDriver._conn.nodeDeviceLookupByName =\
|
||||
fake_nodeDeviceLookupByName
|
||||
self.mox.StubOutWithMock(host.Host, 'device_lookup_by_name')
|
||||
host.Host.device_lookup_by_name = fake_nodeDeviceLookupByName
|
||||
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
actualvf = drvr._get_pcidev_info("pci_0000_04_00_3")
|
||||
@@ -8826,11 +8825,12 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
|
||||
libvirt_driver.LibvirtDriver._conn.listDevices = fakelistDevices
|
||||
|
||||
def fake_nodeDeviceLookupByName(name):
|
||||
def fake_nodeDeviceLookupByName(self, name):
|
||||
return FakeNodeDevice(_fake_NodeDevXml[name])
|
||||
|
||||
libvirt_driver.LibvirtDriver._conn.nodeDeviceLookupByName =\
|
||||
fake_nodeDeviceLookupByName
|
||||
self.mox.StubOutWithMock(host.Host, 'device_lookup_by_name')
|
||||
host.Host.device_lookup_by_name = fake_nodeDeviceLookupByName
|
||||
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
actjson = drvr._get_pci_passthrough_devices()
|
||||
|
||||
|
||||
@@ -831,6 +831,11 @@ Active: 8381604 kB
|
||||
self.host.write_instance_config(xml)
|
||||
mock_defineXML.assert_called_once_with(xml)
|
||||
|
||||
@mock.patch.object(fakelibvirt.virConnect, "nodeDeviceLookupByName")
|
||||
def test_device_lookup_by_name(self, mock_nodeDeviceLookupByName):
|
||||
self.host.device_lookup_by_name("foo")
|
||||
mock_nodeDeviceLookupByName.assert_called_once_with("foo")
|
||||
|
||||
|
||||
class DomainJobInfoTestCase(test.NoDBTestCase):
|
||||
|
||||
|
||||
@@ -2853,7 +2853,7 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
for dev in pci_devices:
|
||||
libvirt_dev_addr = dev['hypervisor_name']
|
||||
libvirt_dev = \
|
||||
self._conn.nodeDeviceLookupByName(libvirt_dev_addr)
|
||||
self._host.device_lookup_by_name(libvirt_dev_addr)
|
||||
# Note(yjiang5) Spelling for 'dettach' is correct, see
|
||||
# http://libvirt.org/html/libvirt-libvirt.html.
|
||||
libvirt_dev.dettach()
|
||||
@@ -2864,7 +2864,7 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
for dev in pci_devices:
|
||||
libvirt_dev_addr = dev['hypervisor_name']
|
||||
libvirt_dev = \
|
||||
self._conn.nodeDeviceLookupByName(libvirt_dev_addr)
|
||||
self._host.device_lookup_by_name(libvirt_dev_addr)
|
||||
libvirt_dev.reset()
|
||||
|
||||
except libvirt.libvirtError as exc:
|
||||
@@ -4632,7 +4632,7 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
'phys_function': phys_address}
|
||||
return {'dev_type': 'type-PCI'}
|
||||
|
||||
virtdev = self._conn.nodeDeviceLookupByName(devname)
|
||||
virtdev = self._host.device_lookup_by_name(devname)
|
||||
xmlstr = virtdev.XMLDesc(0)
|
||||
cfgdev = vconfig.LibvirtConfigNodeDevice()
|
||||
cfgdev.parse_str(xmlstr)
|
||||
|
||||
@@ -943,3 +943,11 @@ class Host(object):
|
||||
:returns: a virDomain instance
|
||||
"""
|
||||
return self.get_connection().defineXML(xml)
|
||||
|
||||
def device_lookup_by_name(self, name):
|
||||
"""Lookup a node device by its name.
|
||||
|
||||
|
||||
:returns: a virNodeDevice instance
|
||||
"""
|
||||
return self.get_connection().nodeDeviceLookupByName(name)
|
||||
|
||||
Reference in New Issue
Block a user