def _async_migrate(self, asyncjob, origvm, origdconn, migrate_uri, rate, live, secure, max_downtime): meter = asyncjob.get_meter() srcconn = util.dup_conn(origvm.conn) dstconn = util.dup_conn(origdconn) vminst = srcconn.vmm.lookupByName(origvm.get_name()) vm = vmmDomain(srcconn, vminst, vminst.UUID()) logging.debug("Migrating vm=%s from %s to %s", vm.get_name(), srcconn.get_uri(), dstconn.get_uri()) timer = None if max_downtime != 0: # 0 means that the spin box migrate-max-downtime does not # be enabled. current_thread = threading.currentThread() timer = self.timeout_add(100, self._async_set_max_downtime, vm, max_downtime, current_thread) vm.migrate(dstconn, migrate_uri, rate, live, secure, meter=meter) if timer: self.idle_add(gobject.source_remove, timer)
def _async_migrate(self, asyncjob, origvm, origdconn, migrate_uri, rate, live, secure, max_downtime): meter = asyncjob.get_meter() srcconn = util.dup_conn(origvm.conn) dstconn = util.dup_conn(origdconn) vminst = srcconn.vmm.lookupByName(origvm.get_name()) vm = vmmDomain(srcconn, vminst, vminst.UUID()) logging.debug("Migrating vm=%s from %s to %s", vm.get_name(), srcconn.get_uri(), dstconn.get_uri()) timer = None if max_downtime != 0: # 0 means that the spin box migrate-max-downtime does not # be enabled. current_thread = threading.currentThread() timer = self.timeout_add(100, self._async_set_max_downtime, vm, max_downtime, current_thread) vm.migrate(dstconn, migrate_uri, rate, live, secure, meter=meter) if timer: self.idle_add(GLib.source_remove, timer)
def do_install(self, asyncjob, activate): meter = asyncjob.get_meter() self.interface.conn = util.dup_conn(self.conn).vmm self.interface.install(meter, create=activate) logging.debug("Install completed")
def _async_delete(self, asyncjob, paths): newconn = None storage_errors = [] details = "" try: if self.vm.is_active(): logging.debug("Forcing VM '%s' power off.", self.vm.get_name()) self.vm.destroy() # Open a seperate connection to install on since this is async logging.debug("Threading off connection to delete vol.") newconn = util.dup_conn(self.conn).vmm meter = asyncjob.get_meter() for path in paths: try: logging.debug("Deleting path: %s", path) meter.start(text=_("Deleting path '%s'") % path) self._async_delete_path(newconn, path, meter) except Exception, e: storage_errors.append((str(e), "".join(traceback.format_exc()))) meter.end(0) logging.debug("Removing VM '%s'", self.vm.get_name()) self.vm.delete()
def _async_vol_create(self, asyncjob): newconn = util.dup_conn(self.conn).vmm # Lookup different pool obj newpool = newconn.storagePoolLookupByName(self.parent_pool.get_name()) self.vol.pool = newpool meter = asyncjob.get_meter() logging.debug("Starting backround vol creation.") self.vol.install(meter=meter) logging.debug("vol creation complete.")
def _async_clone(self, asyncjob): newconn = None try: self.orig_vm.set_cloning(True) # Open a seperate connection to install on since this is async logging.debug("Threading off connection to clone VM.") newconn = util.dup_conn(self.conn).vmm meter = asyncjob.get_meter() self.clone_design.orig_connection = newconn for d in self.clone_design.clone_virtual_disks: d.conn = newconn self.clone_design.setup() CloneManager.start_duplicate(self.clone_design, meter) finally: self.orig_vm.set_cloning(False)
def _async_delete(self, asyncjob, paths): newconn = None storage_errors = [] details = "" try: # Open a seperate connection to install on since this is async logging.debug("Threading off connection to delete vol.") newconn = util.dup_conn(self.conn).vmm meter = asyncjob.get_meter() for path in paths: try: logging.debug("Deleting path: %s", path) meter.start(text=_("Deleting path '%s'") % path) self._async_delete_path(newconn, path, meter) except Exception, e: storage_errors.append((str(e), "".join(traceback.format_exc()))) meter.end(0) logging.debug("Removing VM '%s'", self.vm.get_name()) self.vm.delete()
def cb(): newconn = util.dup_conn(conn) newconn.restore(path)
def _save_callback(self, asyncjob, vm, file_to_save): conn = util.dup_conn(vm.conn) newvm = conn.get_vm(vm.get_uuid()) meter = asyncjob.get_meter() newvm.save(file_to_save, meter=meter)