viewers: Show spice error message in the UI on disconnect

This commit is contained in:
Cole Robinson 2016-05-16 16:27:23 -04:00
parent 0bd73da4bb
commit 3221b56ac3
2 changed files with 14 additions and 7 deletions

View File

@ -751,13 +751,15 @@ class vmmConsolePages(vmmGObjectUI):
self.err.show_err(_("USB redirection error"),
text2=str(errstr), modal=True)
def _viewer_disconnected_set_page(self, ssherr):
def _viewer_disconnected_set_page(self, errdetails, ssherr):
if self.vm.is_runable():
# Exit was probably for legitimate reasons
self._show_vm_status_unavailable()
return
msg = _("Viewer was disconnected.")
if errdetails:
msg += "\n" + errdetails
if ssherr:
logging.debug("SSH tunnel error output: %s", ssherr)
msg += "\n\n"
@ -765,7 +767,7 @@ class vmmConsolePages(vmmGObjectUI):
self._activate_unavailable_page(msg)
def _viewer_disconnected(self, ignore, ssherr):
def _viewer_disconnected(self, ignore, errdetails, ssherr):
self.widget("console-pages").set_current_page(
_CONSOLE_PAGE_UNAVAILABLE)
self._close_viewer()
@ -774,7 +776,7 @@ class vmmConsolePages(vmmGObjectUI):
# Make sure modifiers are set correctly
self._viewer_focus_changed()
self._viewer_disconnected_set_page(ssherr)
self._viewer_disconnected_set_page(errdetails, ssherr)
self._refresh_resizeguest_from_settings()
def _viewer_connected(self, ignore):

View File

@ -56,7 +56,7 @@ class Viewer(vmmGObject):
"pointer-grab": (GObject.SignalFlags.RUN_FIRST, None, []),
"pointer-ungrab": (GObject.SignalFlags.RUN_FIRST, None, []),
"connected": (GObject.SignalFlags.RUN_FIRST, None, []),
"disconnected": (GObject.SignalFlags.RUN_FIRST, None, [str]),
"disconnected": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"auth-error": (GObject.SignalFlags.RUN_FIRST, None, [str, bool]),
"auth-rejected": (GObject.SignalFlags.RUN_FIRST, None, [str]),
"need-auth": (GObject.SignalFlags.RUN_FIRST, None, [bool, bool]),
@ -165,9 +165,9 @@ class Viewer(vmmGObject):
def _get_grab_keys(self):
return self._display.get_grab_keys().as_string()
def _emit_disconnected(self):
def _emit_disconnected(self, errdetails=None):
ssherr = self._tunnels.get_err_output()
self.emit("disconnected", ssherr)
self.emit("disconnected", errdetails, ssherr)
#######################################################
@ -565,7 +565,12 @@ class SpiceViewer(Viewer):
if channel.get_error():
error = channel.get_error().message
logging.debug("Spice channel event=%s message=%s", event, error)
self._emit_disconnected()
msg = _("Encountered SPICE %(error-name)s") % {
"error-name": event.value_nick}
if error:
msg += ": %s" % error
self._emit_disconnected(msg)
def _fd_channel_event_cb(self, channel, event):
# When we see any event from the channel, release the