Change in vdsm[master]: hostdev: expose parameters needed to support hotunplug
mpolednik at redhat.com
mpolednik at redhat.com
Fri Mar 18 14:28:29 UTC 2016
Martin Polednik has uploaded a new change for review.
Change subject: hostdev: expose parameters needed to support hotunplug
......................................................................
hostdev: expose parameters needed to support hotunplug
Change-Id: I09e879051b1d47e48e9ae73c1f7d9bfbea8f1237
Signed-off-by: Martin Polednik <mpolednik at redhat.com>
---
M vdsm/virt/vmdevices/hostdevice.py
1 file changed, 30 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/39/54939/1
diff --git a/vdsm/virt/vmdevices/hostdevice.py b/vdsm/virt/vmdevices/hostdevice.py
index 37aff3d..3a5a719 100644
--- a/vdsm/virt/vmdevices/hostdevice.py
+++ b/vdsm/virt/vmdevices/hostdevice.py
@@ -18,6 +18,8 @@
# Refer to the README and COPYING files for full details of the license
#
+import xml.etree.ElementTree as ET
+
from vdsm import utils
from vdsm.hostdev import get_device_params, detach_detachable, \
CAPABILITY_TO_XML_ATTR
@@ -26,13 +28,15 @@
class HostDevice(core.Base):
- __slots__ = ('address', 'hostAddress', 'bootOrder', '_deviceParams')
+ __slots__ = ('address', 'hostAddress', 'bootOrder', '_deviceParams',
+ 'name')
def __init__(self, conf, log, **kwargs):
super(HostDevice, self).__init__(conf, log, **kwargs)
self._deviceParams = get_device_params(self.device)
self.hostAddress = self._deviceParams.get('address')
+ self.name = self.device
def detach(self):
"""
@@ -41,6 +45,31 @@
"""
self._deviceParams = detach_detachable(self.device)
+ @property
+ def _xpath(self):
+ """
+ Returns xpath to the device in libvirt dom xml
+ The path is relative to the root element
+ """
+ def _padding(key):
+ if CAPABILITY_TO_XML_ATTR[
+ self._deviceParams['capability']] == 'pci':
+ if key == 'domain':
+ return {'base': '0x', 'padding': '04'}
+ if key == 'function':
+ return {'base': '0x', 'padding': ''}
+ return {'base': '0x', 'padding': '02'}
+ return {'base': '', 'padding': ''}
+
+ return ('./devices/hostdev/source/address{}'.format(
+ ''.join(['[@{key}=\'{base}{value:{padding}}\']'.format(
+ key=key, value=int(value), **_padding(key)) for
+ key, value in self.hostAddress.items()])))
+
+ def is_attached_to(self, xml_string):
+ dom = ET.fromstring(xml_string)
+ return bool(dom.findall(self._xpath))
+
def getXML(self):
"""
Create domxml for a host device.
--
To view, visit https://gerrit.ovirt.org/54939
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I09e879051b1d47e48e9ae73c1f7d9bfbea8f1237
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Martin Polednik <mpolednik at redhat.com>
More information about the vdsm-patches
mailing list