Vinzenz Feenstra has uploaded a new change for review.
Change subject: vdsm: Simplify the retrieval of device XML objects ......................................................................
vdsm: Simplify the retrieval of device XML objects
Signed-off-by: Vinzenz Feenstra vfeenstr@redhat.com Change-Id: I9d67e1f675ed5b4a6dfdc4fa0ee1a15487fb0a97 --- M vdsm/vm/vm.py 1 file changed, 20 insertions(+), 29 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/47/11747/1
diff --git a/vdsm/vm/vm.py b/vdsm/vm/vm.py index 0d053ff..2286e41 100644 --- a/vdsm/vm/vm.py +++ b/vdsm/vm/vm.py @@ -2039,7 +2039,7 @@
def setTicket(self, otp, seconds, connAct, params): graphics = _domParseStr(self._dom.XMLDesc(0)).childNodes[0]. \ - getElementsByTagName('graphics')[0] + getElementsByTagName('graphics') graphics.setAttribute('passwd', otp) if int(seconds) > 0: validto = time.strftime('%Y-%m-%dT%H:%M:%S', @@ -2111,8 +2111,7 @@
def _getVmInfo(self): self._lastXMLDesc = self._dom.XMLDesc(0) - devxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('devices')[0] + devxml = self._getDeviceXml() self._devXmlHash = str(hash(devxml.toxml()))
return self._lastXMLDesc @@ -2393,6 +2392,14 @@
return address
+ def _getDeviceXml(self, subDeviceName=None, deviceName='devices'): + # TODO use xpath instead of parseString (here and elsewhere) + devices = _domParseStr(self._lastXMLDesc).childNodes[0].\ + getElementsByTagName(deviceName)[0] + if subDeviceName: + return devices.getElementsByTagName(subDeviceName) + return devices + def _getUnknownDeviceInfo(self): """ Obtain unknown devices info from libvirt. @@ -2406,8 +2413,7 @@ return True return False
- devsxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('devices')[0] + devsxml = self._getDeviceXml()
for x in devsxml.childNodes: # Ignore empty nodes and devices without address @@ -2431,9 +2437,7 @@ """ Obtain controller devices info from libvirt. """ - ctrlsxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('devices')[0]. \ - getElementsByTagName('controller') + ctrlsxml = self._getDeviceXml('controller') for x in ctrlsxml: # Ignore controller devices without address if not x.getElementsByTagName('address'): @@ -2478,9 +2482,7 @@ """ Obtain balloon device info from libvirt. """ - balloonxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('devices')[0]. \ - getElementsByTagName('memballoon') + balloonxml = self._getDeviceXml('memballoon') for x in balloonxml: # Ignore balloon devices without address. if not x.getElementsByTagName('address'): @@ -2504,9 +2506,7 @@ """ Obtain smartcard device info from libvirt. """ - smartcardxml = _domParseStr(self._lastXMLDesc).childNodes[0].\ - getElementsByTagName('devices')[0].\ - getElementsByTagName('smartcard') + smartcardxml = self._getDeviceXml('smartcard') for x in smartcardxml: if not x.getElementsByTagName('address'): continue @@ -2529,9 +2529,7 @@ """ Obtain watchdog device info from libvirt. """ - watchdogxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('devices')[0]. \ - getElementsByTagName('watchdog') + watchdogxml = self._getDeviceXml('watchdog') for x in watchdogxml:
# PCI watchdog has "address" different from ISA watchdog @@ -2554,8 +2552,7 @@ """ Obtain video devices info from libvirt. """ - videosxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('devices')[0].getElementsByTagName('video') + videosxml = self._getDeviceXml('video') for x in videosxml: alias = x.getElementsByTagName('alias')[0].getAttribute('name') # Get video card address @@ -2582,8 +2579,7 @@ """ Obtain sound devices info from libvirt. """ - soundsxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('devices')[0].getElementsByTagName('sound') + soundsxml = self._getDeviceXml('sound') for x in soundsxml: alias = x.getElementsByTagName('alias')[0].getAttribute('name') # Get sound card address @@ -2610,8 +2606,7 @@ """ Obtain block devices info from libvirt. """ - disksxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('devices')[0].getElementsByTagName('disk') + disksxml = self._getDeviceXml('disk') # FIXME! We need to gather as much info as possible from the libvirt. # In the future we can return this real data to management instead of # vm's conf @@ -2675,8 +2670,7 @@ """ Obtain display port info from libvirt. """ - graphics = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('graphics')[0] + graphics = self._getDeviceXml(None, 'graphics') port = graphics.getAttribute('port') if port: self.conf['displayPort'] = port @@ -2688,10 +2682,7 @@ """ Obtain network interface info from libvirt. """ - # TODO use xpath instead of parseString (here and elsewhere) - ifsxml = _domParseStr(self._lastXMLDesc).childNodes[0]. \ - getElementsByTagName('devices')[0]. \ - getElementsByTagName('interface') + ifsxml = self._getDeviceXml('interface') for x in ifsxml: devType = x.getAttribute('type') name = x.getElementsByTagName('target')[0].getAttribute('dev')
-- To view, visit http://gerrit.ovirt.org/11747 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange Gerrit-Change-Id: I9d67e1f675ed5b4a6dfdc4fa0ee1a15487fb0a97 Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Vinzenz Feenstra vfeenstr@redhat.com