def get_vm_size(self, vm):
            size = 0
            if vm.private_img is not None:
                size += qubesutils.get_disk_usage (vm.private_img)

            if vm.updateable:
                size += qubesutils.get_disk_usage(vm.root_img)

            return size
Exemple #2
0
        def get_vm_size(self, vm):
            size = 0
            if vm.private_img is not None:
                size += qubesutils.get_disk_usage(vm.private_img)

            if vm.updateable:
                size += qubesutils.get_disk_usage(vm.root_img)

            return size
 def __init__(self, vm):
     self.vm = vm
     if vm.qid == 0:
         local_user = grp.getgrnam('qubes').gr_mem[0]
         home_dir = pwd.getpwnam(local_user).pw_dir
         self.size = qubesutils.get_disk_usage(home_dir)
     else:
         self.size = self.get_vm_size(vm)
     super(BackupVMsWindow.VmListItem, self).__init__(vm.name+ " (" + qubesutils.size_to_human(self.size) + ")")
Exemple #4
0
 def __init__(self, vm):
     self.vm = vm
     if vm.qid == 0:
         local_user = grp.getgrnam('qubes').gr_mem[0]
         home_dir = pwd.getpwnam(local_user).pw_dir
         self.size = qubesutils.get_disk_usage(home_dir)
     else:
         self.size = self.get_vm_size(vm)
     super(BackupVMsWindow.VmListItem,
           self).__init__(vm.name + " (" +
                          qubesutils.size_to_human(self.size) + ")")
    def current_page_changed(self, id):
        if self.currentPage() is self.confirm_page:

            self.target_appvm = None
            if self.appvm_combobox.currentText() != "None":   #An existing appvm chosen 
                self.target_appvm = str(self.appvm_combobox.currentText())

            # FIXME: ensure that at least a non empty passphrase has been provided

            del self.func_output[:]
            try:
                self.files_to_backup = qubesutils.backup_prepare(str(self.backup_dir), exclude_list = self.excluded, print_callback = self.gather_output)
            except Exception as ex:
                print "Exception:",ex
                QMessageBox.critical(None, "Error while preparing backup.", "ERROR: {0}".format(ex))

            self.textEdit.setReadOnly(True)
            self.textEdit.setFontFamily("Monospace")
            self.textEdit.setText("\n".join(self.func_output))

        elif self.currentPage() is self.commit_page:
            self.button(self.FinishButton).setDisabled(True)
            self.button(self.CancelButton).setDisabled(True)
            self.thread_monitor = ThreadMonitor()
            initial_usage = qubesutils.get_disk_usage(self.backup_dir)
            thread = threading.Thread (target= self.__do_backup__ , args=(self.thread_monitor,))
            thread.daemon = True
            thread.start()
            self.button(self.CancelButton).setDisabled(False)

            counter = 0
            while not self.thread_monitor.is_finished():
                self.app.processEvents()
                time.sleep (0.1)
                counter += 1
                if counter == 20:
                    progress = self.check_backup_progress(initial_usage, self.total_size)
                    self.progress_bar.setValue(progress)
                    counter = 0

            if not self.thread_monitor.success:
                QMessageBox.warning (None, "Backup error!", "ERROR: {1}".format(self.vm.name, self.thread_monitor.error_msg))

            if self.dev_mount_path != None:
                umount_device(self.dev_mount_path)
            self.button(self.FinishButton).setEnabled(True)
Exemple #6
0
 def check_backup_progress(self, initial_usage, total_backup_size):
     du = qubesutils.get_disk_usage(self.backup_dir)
     done = du - initial_usage
     percent = int((float(done)/total_backup_size)*100)
     return percent