Vinzenz Feenstra has uploaded a new change for review. 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 <[email protected]> --- M vdsm/vm.py 1 file changed, 29 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/02/17602/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/17602 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic828d13761b26b3ec01b604f431050a611bce01c Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Vinzenz Feenstra <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
