Cancell backup in progress. (ticket #511)
This commit is contained in:
		
							parent
							
								
									c887db9139
								
							
						
					
					
						commit
						22fc1167ef
					
				| @ -23,6 +23,7 @@ | |||||||
| 
 | 
 | ||||||
| import sys | import sys | ||||||
| import os | import os | ||||||
|  | import signal | ||||||
| from PyQt4.QtCore import * | from PyQt4.QtCore import * | ||||||
| from PyQt4.QtGui import * | from PyQt4.QtGui import * | ||||||
| 
 | 
 | ||||||
| @ -279,13 +280,14 @@ class BackupVMsWindow(Ui_Backup, QWizard): | |||||||
|             self.textEdit.setText("\n".join(self.func_output)) |             self.textEdit.setText("\n".join(self.func_output)) | ||||||
| 
 | 
 | ||||||
|         elif self.currentPage() is self.commit_page: |         elif self.currentPage() is self.commit_page: | ||||||
|             self.button(self.CancelButton).setDisabled(True) |  | ||||||
|             self.button(self.FinishButton).setDisabled(True) |             self.button(self.FinishButton).setDisabled(True) | ||||||
|  |             self.button(self.CancelButton).setDisabled(True) | ||||||
|             self.thread_monitor = ThreadMonitor() |             self.thread_monitor = ThreadMonitor() | ||||||
|             initial_usage = qubesutils.get_disk_usage(self.backup_dir) |             initial_usage = qubesutils.get_disk_usage(self.backup_dir) | ||||||
|             thread = threading.Thread (target= self.__do_backup__ , args=(self.thread_monitor,)) |             thread = threading.Thread (target= self.__do_backup__ , args=(self.thread_monitor,)) | ||||||
|             thread.daemon = True |             thread.daemon = True | ||||||
|             thread.start() |             thread.start() | ||||||
|  |             self.button(self.CancelButton).setDisabled(False) | ||||||
| 
 | 
 | ||||||
|             counter = 0 |             counter = 0 | ||||||
|             while not self.thread_monitor.is_finished(): |             while not self.thread_monitor.is_finished(): | ||||||
| @ -306,6 +308,25 @@ class BackupVMsWindow(Ui_Backup, QWizard): | |||||||
|   |   | ||||||
| 
 | 
 | ||||||
|     def reject(self): |     def reject(self): | ||||||
|  |         #cancell clicked while the backup is in progress. | ||||||
|  |         #calling kill on cp. | ||||||
|  |         if self.currentPage() is self.commit_page: | ||||||
|  |             manager_pid = os.getpid() | ||||||
|  |             cp_pid_cmd = ["ps" ,"--ppid", str(manager_pid)] | ||||||
|  |             pid = None | ||||||
|  | 
 | ||||||
|  |             while not self.thread_monitor.is_finished(): | ||||||
|  |                 cp_pid = subprocess.Popen(cp_pid_cmd, stdout = subprocess.PIPE) | ||||||
|  |                 output = cp_pid.stdout.read().split("\n") | ||||||
|  |                  | ||||||
|  |                 for l in output: | ||||||
|  |                     if l.endswith("cp"): | ||||||
|  |                         pid = l.split(" ")[1] | ||||||
|  |                         break | ||||||
|  |                 if pid != None: | ||||||
|  |                     os.kill(int(pid), signal.SIGKILL) | ||||||
|  |                     break | ||||||
|  | 
 | ||||||
|         if self.dev_mount_path != None: |         if self.dev_mount_path != None: | ||||||
|             umount_device(self.dev_mount_path) |             umount_device(self.dev_mount_path) | ||||||
|         self.done(0) |         self.done(0) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Agnieszka Kostrzewa
						Agnieszka Kostrzewa