def destroyDevice(self, devid): try: DevController.destroyDevice(self, int(devid)) time.sleep(5) t = xstransact() frontpath = self.frontendPath(int(devid)) backpath = t.Read(frontpath, "backend") if backpath: t.Remove(backpath) log.debug('in try: removed %s' % backpath) t.Remove(frontpath) log.debug('in try: removed %s' % frontpath) except ValueError: devid_end = type(devid) is str and devid.split('/')[-1] or None for i in self.deviceIDs(): d = self.readBackend(i, 'dev') if d == devid or (devid_end and d == devid_end): DevController.destroyDevice(self, i) time.sleep(5) frontpath = self.frontendPath(int(devid)) backpath = t.Read(frontpath, "backend") if backpath: t.Remove(backpath) log.debug('in err: removed %s' % backpath) t.Remove(frontpath) log.debug('in err: removed %s' % frontpath) return raise VmError("Device %s not connected" % devid)
def destroyDevice(self, devid): try: DevController.destroyDevice(self, int(devid)) time.sleep(5) t = xstransact() frontpath = self.frontendPath(int(devid)) backpath = t.Read(frontpath, "backend") if backpath: t.Remove(backpath) log.debug("in try: removed %s" % backpath) t.Remove(frontpath) log.debug("in try: removed %s" % frontpath) except ValueError: devid_end = type(devid) is str and devid.split("/")[-1] or None for i in self.deviceIDs(): d = self.readBackend(i, "dev") if d == devid or (devid_end and d == devid_end): DevController.destroyDevice(self, i) time.sleep(5) frontpath = self.frontendPath(int(devid)) backpath = t.Read(frontpath, "backend") if backpath: t.Remove(backpath) log.debug("in err: removed %s" % backpath) t.Remove(frontpath) log.debug("in err: removed %s" % frontpath) return raise VmError("Device %s not connected" % devid)
def destroyDevice(self, devid): try: DevController.destroyDevice(self, int(devid)) except ValueError: devid_end = type(devid) is str and devid.split('/')[-1] or None for i in self.deviceIDs(): d = self.readBackend(i, 'dev') if d == devid or (devid_end and d == devid_end): DevController.destroyDevice(self, i) return raise VmError("Device %s not connected" % devid)
def destroyDevice(self, devid): """@see DevController.destroyDevice""" # If we are given a device name, then look up the device ID from it, # and destroy that ID instead. If what we are given is an integer, # then assume it's a device ID and pass it straight through to our # superclass's method. try: DevController.destroyDevice(self, int(devid)) except ValueError: devid_end = type(devid) is str and devid.split('/')[-1] or None for i in self.deviceIDs(): d = self.readBackend(i, 'dev') if d == devid or (devid_end and d == devid_end): DevController.destroyDevice(self, i) return raise VmError("Device %s not connected" % devid)
def destroyDevice(self, devid, force): """@see DevController.destroyDevice""" # vbd device IDs can be either string or integer. Further, the # following string values are possible: # - devicetype/deviceid (vbd/51728) # - devicetype/devicename (/dev/xvdb) # - devicename (xvdb) # Let our superclass handle integer or devicetype/deviceid forms. # If we are given a device name form, then look up the device ID # from it, and destroy that ID instead. try: DevController.destroyDevice(self, devid, force) except ValueError: dev = self.convertToDeviceNumber(devid) for i in self.deviceIDs(): if i == dev: DevController.destroyDevice(self, i, force) return raise VmError("Device %s not connected" % devid)
def destroyDevice(self, devid, force): DevController.destroyDevice(self, devid, True) log.debug('pci: unregister aer watch') self.unwatchAerState()
def destroyDevice(self, devid, force): DevController.destroyDevice(self, devid, True)
def destroyDevice(self, devid, force): # remove the backend xenstore entries no matter what # because we kill qemu-dm with extreme prejudice # not giving it a chance to remove them itself DevController.destroyDevice(self, devid, True)