def tick(self): if not self.nodedev_obj: return if not self.nodedev_obj.conn.is_active(): return try: self.nodedev_obj.refresh_xml() xml = self.nodedev_obj.get_xml() except: # Assume the device was removed return try: vobj = NodeDevice.parse(self.nodedev_obj.conn.get_backend(), xml) has_media = vobj.media_available or False except: logging.exception("Node device CDROM polling failed") return if has_media == self.has_media(): return self.set_media(has_media, None, None) self.idle_emit(has_media and "media-added" or "media-removed")
def _testCompare(self, devname, vals, devxml=None): if devxml: dev = NodeDevice.parse(conn, devxml) else: dev = self._nodeDevFromName(devname) for attr in vals.keys(): expect = vals[attr] actual = getattr(dev, attr) if expect != actual: raise AssertionError("devname=%s attribute=%s did not match:\n" "expect=%s\nactual=%s" % (devname, attr, expect, actual)) self.assertEqual(vals[attr], getattr(dev, attr))
def _testCompare(self, devname, vals, devxml=None): def _compare(dev, vals, root=""): for attr in list(vals.keys()): expect = vals[attr] actual = getattr(dev, attr) if isinstance(expect, list): for adev, exp in zip(actual, expect): _compare(adev, exp, attr + ".") else: if expect != actual: raise AssertionError("devname=%s attribute=%s%s did not match:\n" "expect=%s\nactual=%s" % (devname, root, attr, expect, actual)) self.assertEqual(vals[attr], getattr(dev, attr)) if devxml: dev = NodeDevice.parse(self.conn, devxml) else: dev = self._nodeDevFromName(devname) _compare(dev, vals) return dev
def _nodeDevFromName(self, devname): node = conn.nodeDeviceLookupByName(devname) xml = node.XMLDesc(0) return NodeDevice.parse(conn, xml)
def _parse_convert(conn, parsexml=None): return NodeDevice.parse(conn, parsexml)