Change in vdsm[ovirt-3.3]: vdsm: Always retrieve alias for Balloon and Console devices

danken at redhat.com danken at redhat.com
Mon Aug 5 20:55:44 UTC 2013


Hello Vinzenz Feenstra,

I'd like you to do a code review.  Please visit

    http://gerrit.ovirt.org/17686

to review the following change.

Change subject: vdsm: Always retrieve alias for Balloon and Console devices
......................................................................

vdsm: Always retrieve alias for Balloon and Console devices

We haven't been retrieving the alias value for console devices which
now starts to bite us due to the assumption that all VmDevice objects,
have to have an alias attribute during the migration.

Due to a bug in the handling for Balloon devices this also happened.

This commit fixes the problem for the future by retrieving the aliases.

Change-Id: Ic828d13761b26b3ec01b604f431050a611bce01c
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=988065
Signed-off-by: Vinzenz Feenstra <vfeenstr at redhat.com>
Reviewed-on: http://gerrit.ovirt.org/17602
Reviewed-by: Dan Kenigsberg <danken at redhat.com>
---
M vdsm/vm.py
1 file changed, 29 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/86/17686/1

diff --git a/vdsm/vm.py b/vdsm/vm.py
index eefbccd..92b4b91 100644
--- a/vdsm/vm.py
+++ b/vdsm/vm.py
@@ -2732,6 +2732,7 @@
         self._getUnderlyingBalloonDeviceInfo()
         self._getUnderlyingWatchdogDeviceInfo()
         self._getUnderlyingSmartcardDeviceInfo()
+        self._getUnderlyingConsoleDeviceInfo()
         # Obtain info of all unknown devices. Must be last!
         self._getUnderlyingUnknownDeviceInfo()
 
@@ -4427,20 +4428,41 @@
         for x in balloonxml:
             # Ignore balloon devices without address.
             if not x.getElementsByTagName('address'):
-                continue
-
-            address = self._getUnderlyingDeviceAddress(x)
+                address = None
+            else:
+                address = self._getUnderlyingDeviceAddress(x)
             alias = x.getElementsByTagName('alias')[0].getAttribute('name')
 
             for dev in self._devices[BALLOON_DEVICES]:
-                if not hasattr(dev, 'address'):
+                if address and not hasattr(dev, 'address'):
                     dev.address = address
+                if not hasattr(dev, 'alias'):
                     dev.alias = alias
 
             for dev in self.conf['devices']:
-                if ((dev['type'] == BALLOON_DEVICES) and
-                        not dev.get('address')):
-                    dev['address'] = address
+                if dev['type'] == BALLOON_DEVICES:
+                    if address and not dev.get('address'):
+                        dev['address'] = address
+                    if not dev.get('alias'):
+                        dev['alias'] = alias
+
+    def _getUnderlyingConsoleDeviceInfo(self):
+        """
+        Obtain the alias for the console device from libvirt
+        """
+        consolexml = _domParseStr(self._lastXMLDesc).childNodes[0].\
+            getElementsByTagName('devices')[0].\
+            getElementsByTagName('console')
+        for x in consolexml:
+            # All we care about is the alias
+            alias = x.getElementsByTagName('alias')[0].getAttribute('name')
+            for dev in self._devices[CONSOLE_DEVICES]:
+                if not hasattr(dev, 'alias'):
+                    dev.alias = alias
+
+            for dev in self.conf['devices']:
+                if dev['device'] == CONSOLE_DEVICES and \
+                        not dev.get('alias'):
                     dev['alias'] = alias
 
     def _getUnderlyingSmartcardDeviceInfo(self):


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic828d13761b26b3ec01b604f431050a611bce01c
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: ovirt-3.3
Gerrit-Owner: Dan Kenigsberg <danken at redhat.com>
Gerrit-Reviewer: Vinzenz Feenstra <vfeenstr at redhat.com>


More information about the vdsm-patches mailing list