mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-10 23:45:49 -06:00
Added error dialog for domain restore errors
This commit is contained in:
parent
eaab238635
commit
0a1906936f
@ -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)
|
||||
|
@ -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:
|
||||
|
@ -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()
|
||||
|
@ -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")
|
||||
|
Loading…
Reference in New Issue
Block a user