diff --git a/qubesmanager/create_new_vm.py b/qubesmanager/create_new_vm.py index d761bc3..cc7c62a 100644 --- a/qubesmanager/create_new_vm.py +++ b/qubesmanager/create_new_vm.py @@ -250,39 +250,40 @@ class NewVmDlg (QDialog, Ui_NewVMDlg): self.done(0) - - - def do_create_vm (self, vmclass, vmname, label, template_vm, netvm, standalone, allow_networking, thread_monitor): + @staticmethod + def do_create_vm(vmclass, vmname, label, template_vm, netvm, + standalone, allow_networking, thread_monitor): vm = None + qc = QubesVmCollection() + qc.lock_db_for_writing() + qc.load() try: - self.qvm_collection.lock_db_for_writing() - self.qvm_collection.load() - if not standalone: - vm = self.qvm_collection.add_new_vm(vmclass, name=vmname, template=template_vm, label=label) + vm = qc.add_new_vm(vmclass, name=vmname, template=template_vm, + label=label) else: - vm = self.qvm_collection.add_new_vm(vmclass, name=vmname, template=None, label=label) - vm.create_on_disk(verbose=False, source_template = template_vm) + vm = qc.add_new_vm(vmclass, name=vmname, template=None, + label=label) + vm.create_on_disk(verbose=False, source_template=template_vm) - if allow_networking == False: + if not allow_networking: vm.uses_default_netvm = False vm.netvm = None else: vm.netvm = netvm - if vm.netvm == self.qvm_collection.get_default_netvm(): + if vm.netvm.qid == qc.get_default_netvm().qid: vm.uses_default_netvm = True else: vm.uses_default_netvm = False - self.qvm_collection.save() - + qc.save() except Exception as ex: - thread_monitor.set_error_msg (str(ex)) + thread_monitor.set_error_msg(str(ex)) if vm: vm.remove_from_disk() - self.qvm_collection.pop(vm.qid) + qc.pop(vm.qid) finally: - self.qvm_collection.unlock_db() + qc.unlock_db() thread_monitor.set_finished() diff --git a/qubesmanager/main.py b/qubesmanager/main.py index d8e3eb1..65a4de6 100755 --- a/qubesmanager/main.py +++ b/qubesmanager/main.py @@ -1000,28 +1000,30 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): "ERROR: {0}".format( thread_monitor.error_msg)) - def do_remove_vm(self, vm, thread_monitor): + @staticmethod + def do_remove_vm(vm, thread_monitor): + qc = QubesVmCollection() + qc.lock_db_for_writing() try: - self.qvm_collection.lock_db_for_writing() - self.qvm_collection.load() - vm = self.qvm_collection[vm.qid] + qc.load() + vm = qc[vm.qid] # TODO: the following two conditions should really be checked # by qvm_collection.pop() overload... if vm.is_template() and \ - self.qvm_collection.default_template_qid == vm.qid: - self.qvm_collection.default_template_qid = None + qc.default_template_qid == vm.qid: + qc.default_template_qid = None if vm.is_netvm() and \ - self.qvm_collection.default_netvm_qid == vm.qid: - self.qvm_collection.default_netvm_qid = None + qc.default_netvm_qid == vm.qid: + qc.default_netvm_qid = None - self.qvm_collection.pop(vm.qid) - self.qvm_collection.save() + qc.pop(vm.qid) + qc.save() vm.remove_from_disk() except Exception as ex: thread_monitor.set_error_msg(str(ex)) finally: - self.qvm_collection.unlock_db() + qc.unlock_db() thread_monitor.set_finished() @@ -1066,28 +1068,30 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): "Exception while cloning:
{0}".format( thread_monitor.error_msg)) - def do_clone_vm(self, vm, dst_name, thread_monitor): + @staticmethod + def do_clone_vm(vm, dst_name, thread_monitor): dst_vm = None + qc = QubesVmCollection() + qc.lock_db_for_writing() + qc.load() try: - self.qvm_collection.lock_db_for_writing() - self.qvm_collection.load() - src_vm = self.qvm_collection[vm.qid] + src_vm = qc[vm.qid] - dst_vm = self.qvm_collection.add_new_vm(src_vm.__class__.__name__, - name=dst_name, - template=src_vm.template, - installed_by_rpm=False) + dst_vm = qc.add_new_vm(src_vm.__class__.__name__, + name=dst_name, + template=src_vm.template, + installed_by_rpm=False) dst_vm.clone_attrs(src_vm) dst_vm.clone_disk_files(src_vm=src_vm, verbose=False) - self.qvm_collection.save() - self.qvm_collection.unlock_db() + qc.save() except Exception as ex: if dst_vm: - self.qvm_collection.pop(dst_vm.qid) + qc.pop(dst_vm.qid) dst_vm.remove_from_disk() - self.qvm_collection.unlock_db() thread_monitor.set_error_msg(str(ex)) + finally: + qc.unlock_db() thread_monitor.set_finished() @pyqtSlot(name='on_action_resumevm_triggered') @@ -1126,8 +1130,8 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): self.set_error(vm.qid, "Error starting VM: %s" % thread_monitor.error_msg) - # noinspection PyMethodMayBeStatic - def do_start_vm(self, vm, thread_monitor): + @staticmethod + def do_start_vm(vm, thread_monitor): try: vm.verify_files() vm.start() @@ -1347,7 +1351,8 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): "ERROR: {0}".format( thread_monitor.error_msg)) - def do_update_vm(self, vm, thread_monitor): + @staticmethod + def do_update_vm(vm, thread_monitor): try: if vm.qid == 0: subprocess.check_call( @@ -1393,7 +1398,8 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): "Exception while running command:
{0}".format( thread_monitor.error_msg)) - def do_run_command_in_vm(self, vm, command_to_run, thread_monitor): + @staticmethod + def do_run_command_in_vm(vm, command_to_run, thread_monitor): try: vm.run(command_to_run, verbose=False, autostart=True, notify_function=lambda lvl, msg: trayIcon.showMessage(