From f86c640d657c71defe61bd88319f75f8e282a9ce Mon Sep 17 00:00:00 2001 From: Christopher Laprise Date: Wed, 6 Dec 2017 21:31:30 -0500 Subject: [PATCH] Fix verify-only --- qubesadmin/backup/restore.py | 24 +++++++++++++----------- qubesadmin/tools/qvm_backup_restore.py | 8 ++++++-- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/qubesadmin/backup/restore.py b/qubesadmin/backup/restore.py index 88d1992..745e4a1 100644 --- a/qubesadmin/backup/restore.py +++ b/qubesadmin/backup/restore.py @@ -1357,9 +1357,10 @@ class BackupRestore(object): # This all means that if the file was correctly verified # + decrypted, we will surely access the right file filename = self._verify_and_decrypt(filename) - if not self.options.verify_only: to_extract.put(os.path.join(self.tmpdir, filename)) + else: + os.unlink(os.path.join(self.tmpdir, filename)) if self.canceled: raise BackupCanceledError("Restore canceled", @@ -1783,20 +1784,18 @@ class BackupRestore(object): raise else: self.log.error('Error extracting data: ' + str(err)) - self.log.warning( - "Continuing anyway to restore at least some VMs") - - if self.options.verify_only: - shutil.rmtree(self.tmpdir) - return + finally: + if self.log.getEffectiveLevel() > logging.DEBUG: + shutil.rmtree(self.tmpdir) if self.canceled: raise BackupCanceledError("Restore canceled", tmpdir=self.tmpdir) - shutil.rmtree(self.tmpdir) - self.log.info("-> Done. Please install updates for all the restored " - "templates.") + self.log.info("-> Done.") + if not self.options.verify_only: + self.log.info("-> Please install updates for all the restored " + "templates.") def _restore_vms_metadata(self, restore_info): '''Restore VM metadata @@ -1817,7 +1816,10 @@ class BackupRestore(object): for vm in self._templates_first(vms.values()): if self.canceled: return - self.log.info("-> Restoring %s...", vm.name) + if self.options.verify_only: + self.log.info("-> Verifying %s...", vm.name) + else: + self.log.info("-> Restoring %s...", vm.name) kwargs = {} if vm.template: template = restore_info[vm.name].template diff --git a/qubesadmin/tools/qvm_backup_restore.py b/qubesadmin/tools/qvm_backup_restore.py index c820fc9..6f3aed3 100644 --- a/qubesadmin/tools/qvm_backup_restore.py +++ b/qubesadmin/tools/qvm_backup_restore.py @@ -134,8 +134,12 @@ def handle_broken(app, args, restore_info): "Or use --rename-conflicting to restore those VMs under " "modified names (with numbers at the end).") - app.log.info("The above VMs will be copied and added to your system.") - app.log.info("Exisiting VMs will NOT be removed.") + if args.verify_only: + app.log.info("The above VM archive(s) will be verified.") + app.log.info("Existing VMs will NOT be removed or altered.") + else: + app.log.info("The above VMs will be copied and added to your system.") + app.log.info("Exisiting VMs will NOT be removed.") if there_are_missing_templates: app.log.warning("*** One or more TemplateVMs are missing on the "