Added error dialog for domain restore errors

This commit is contained in:
Hugh O. Brock 2006-07-24 13:50:11 -04:00
parent eaab238635
commit 0a1906936f
4 changed files with 31 additions and 7 deletions

View File

@ -24,7 +24,7 @@ import gobject
# Displays a progress bar while executing the "callback" method.
class asyncJob(gobject.GObject):
class vmmAsyncJob(gobject.GObject):
# This thin wrapper only exists so we can put debugging
# code in the run() method every now & then
class asyncJobWorker(threading.Thread):
@ -42,7 +42,7 @@ class asyncJob(gobject.GObject):
self.pbar = self.pbar_glade.get_widget("pbar")
self.pbar_win.set_title(title)
self.pbar_win.hide()
self.bg_thread = asyncJob.asyncJobWorker(callback, args)
self.bg_thread = vmmAsyncJob.asyncJobWorker(callback, args)
def run(self):
self.timer = gobject.timeout_add (100, self.pulse_pbar)

View File

@ -19,6 +19,7 @@
import gobject
import libvirt
import os
from time import time
from virtManager.domain import vmmDomain
@ -86,7 +87,10 @@ class vmmConnection(gobject.GObject):
return self.hostinfo[4] * self.hostinfo[5] * self.hostinfo[6] * self.hostinfo[7]
def restore(self, frm):
self.vmm.restore(frm)
status = self.vmm.restore(frm)
if(status == 0):
os.remove(frm)
return status
def tick(self):
if self.vmm == None:

View File

@ -28,7 +28,7 @@ from virtManager.preferences import vmmPreferences
from virtManager.manager import vmmManager
from virtManager.details import vmmDetails
from virtManager.console import vmmConsole
from virtManager.asyncjob import asyncJob
from virtManager.asyncjob import vmmAsyncJob
class vmmEngine:
def __init__(self, config):
@ -222,7 +222,7 @@ class vmmEngine:
self.fcdialog.hide()
if(response == gtk.RESPONSE_ACCEPT):
file_to_save = self.fcdialog.get_filename()
progWin = asyncJob(self.config, vm.save,
progWin = vmmAsyncJob(self.config, vm.save,
[file_to_save], "Saving Virtual Machine")
progWin.run()
self.fcdialog.destroy()

View File

@ -24,7 +24,7 @@ import threading
import sparkline
from virtManager.asyncjob import asyncJob
from virtManager.asyncjob import vmmAsyncJob
VMLIST_SORT_ID = 1
VMLIST_SORT_NAME = 2
@ -125,6 +125,9 @@ class vmmManager(gobject.GObject):
self.window.get_widget("vm-list").get_selection().connect("changed", self.vm_selected)
self.connection.connect("disconnected", self.close)
# store any error message from the restore-domain callback
self.domain_restore_error = ""
def show(self):
win = self.window.get_widget("vmm-manager")
win.show_all()
@ -155,11 +158,28 @@ class vmmManager(gobject.GObject):
self.fcdialog.hide()
if(response == gtk.RESPONSE_ACCEPT):
file_to_load = self.fcdialog.get_filename()
progWin = asyncJob(self.config, self.connection.restore,
progWin = vmmAsyncJob(self.config, self.restore_saved_callback,
[file_to_load], "Restoring Virtual Machine")
progWin.run()
self.fcdialog.destroy()
if(self.domain_restore_error != ""):
self.error_msg = gtk.MessageDialog(self.window.get_widget("vmm-manager"),
gtk.DIALOG_DESTROY_WITH_PARENT,
gtk.MESSAGE_ERROR,
gtk.BUTTONS_OK,
self.domain_restore_error)
self.error_msg.run()
self.error_msg.destroy()
self.domain_restore_error = ""
def restore_saved_callback(self, file_to_load):
status = self.connection.restore(file_to_load)
if(status != 0):
self.domain_restore_error = "Error restoring domain " + file_to_load + \
". Is the domain already running?"
def vm_added(self, connection, uri, vmuuid):
vmlist = self.window.get_widget("vm-list")