Change in vdsm[master]: virt: dev: bootstrap from_xml method

fromani at redhat.com fromani at redhat.com
Fri Oct 3 07:17:09 UTC 2014


Francesco Romani has uploaded a new change for review.

Change subject: virt: dev: bootstrap from_xml method
......................................................................

virt: dev: bootstrap from_xml method

implement from_xml method, do incapsulate device
creation from xml description.
Use it for Video Devices.

Change-Id: I745909ce65ecb30da299d2d8afb1987a91581ace
Signed-off-by: Francesco Romani <fromani at redhat.com>
---
M vdsm/virt/vm.py
M vdsm/virt/vmdevices.py
2 files changed, 11 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/50/33750/1

diff --git a/vdsm/virt/vm.py b/vdsm/virt/vm.py
index 5b710a8..d356da8 100644
--- a/vdsm/virt/vm.py
+++ b/vdsm/virt/vm.py
@@ -4866,9 +4866,7 @@
         videosxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \
             getElementsByTagName('devices')[0].getElementsByTagName('video')
         for x in videosxml:
-            alias = x.getElementsByTagName('alias')[0].getAttribute('name')
-            # Get video card address
-            address = vmxml.device_address(x)
+            dev = vmdevices.VideoDevice.from_xml(x)
 
             # FIXME. We have an identification problem here.
             # Video card device has not unique identifier, except the alias
@@ -4876,15 +4874,15 @@
             # we can only assign the address according to devices order.
             for vc in self._devices[VIDEO_DEVICES]:
                 if not hasattr(vc, 'address') or not hasattr(vc, 'alias'):
-                    vc.alias = alias
-                    vc.address = address
+                    vc.alias = dev.alias
+                    vc.address = dev.address
                     break
             # Update vm's conf with address
             for dev in self.conf['devices']:
                 if ((dev['type'] == VIDEO_DEVICES) and
                         (not dev.get('address') or not dev.get('alias'))):
-                    dev['address'] = address
-                    dev['alias'] = alias
+                    dev['address'] = dev.address
+                    dev['alias'] = dev.alias
                     break
 
     def _getUnderlyingSoundDeviceInfo(self):
diff --git a/vdsm/virt/vmdevices.py b/vdsm/virt/vmdevices.py
index 7b01cc4..14278e1 100644
--- a/vdsm/virt/vmdevices.py
+++ b/vdsm/virt/vmdevices.py
@@ -44,6 +44,12 @@
                  if not a.startswith('__')]
         return ' '.join(attrs)
 
+    @classmethod
+    def from_xml(cls, conf, log, dev_xml):
+        alias = dev_xml.getElementsByTagName('alias')[0].getAttribute('name')
+        address = vmxml.device_address(dev_xml)
+        return cls(conf, log, alias=alias, address=address)
+
 
 class VideoDevice(Base):
     __slots__ = ('address',)


-- 
To view, visit http://gerrit.ovirt.org/33750
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I745909ce65ecb30da299d2d8afb1987a91581ace
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <fromani at redhat.com>


More information about the vdsm-patches mailing list