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:
Sahid Orentino Ferdjaoui
2015-04-24 11:35:00 -04:00
parent 2790f22cf4
commit 147e592f07
4 changed files with 23 additions and 10 deletions
+7 -7
View File
@@ -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):
+3 -3
View File
@@ -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)
+8
View File
@@ -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)