mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
viewers: Show spice error message in the UI on disconnect
This commit is contained in:
parent
0bd73da4bb
commit
3221b56ac3
@ -751,13 +751,15 @@ class vmmConsolePages(vmmGObjectUI):
|
|||||||
self.err.show_err(_("USB redirection error"),
|
self.err.show_err(_("USB redirection error"),
|
||||||
text2=str(errstr), modal=True)
|
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():
|
if self.vm.is_runable():
|
||||||
# Exit was probably for legitimate reasons
|
# Exit was probably for legitimate reasons
|
||||||
self._show_vm_status_unavailable()
|
self._show_vm_status_unavailable()
|
||||||
return
|
return
|
||||||
|
|
||||||
msg = _("Viewer was disconnected.")
|
msg = _("Viewer was disconnected.")
|
||||||
|
if errdetails:
|
||||||
|
msg += "\n" + errdetails
|
||||||
if ssherr:
|
if ssherr:
|
||||||
logging.debug("SSH tunnel error output: %s", ssherr)
|
logging.debug("SSH tunnel error output: %s", ssherr)
|
||||||
msg += "\n\n"
|
msg += "\n\n"
|
||||||
@ -765,7 +767,7 @@ class vmmConsolePages(vmmGObjectUI):
|
|||||||
|
|
||||||
self._activate_unavailable_page(msg)
|
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(
|
self.widget("console-pages").set_current_page(
|
||||||
_CONSOLE_PAGE_UNAVAILABLE)
|
_CONSOLE_PAGE_UNAVAILABLE)
|
||||||
self._close_viewer()
|
self._close_viewer()
|
||||||
@ -774,7 +776,7 @@ class vmmConsolePages(vmmGObjectUI):
|
|||||||
# Make sure modifiers are set correctly
|
# Make sure modifiers are set correctly
|
||||||
self._viewer_focus_changed()
|
self._viewer_focus_changed()
|
||||||
|
|
||||||
self._viewer_disconnected_set_page(ssherr)
|
self._viewer_disconnected_set_page(errdetails, ssherr)
|
||||||
self._refresh_resizeguest_from_settings()
|
self._refresh_resizeguest_from_settings()
|
||||||
|
|
||||||
def _viewer_connected(self, ignore):
|
def _viewer_connected(self, ignore):
|
||||||
|
@ -56,7 +56,7 @@ class Viewer(vmmGObject):
|
|||||||
"pointer-grab": (GObject.SignalFlags.RUN_FIRST, None, []),
|
"pointer-grab": (GObject.SignalFlags.RUN_FIRST, None, []),
|
||||||
"pointer-ungrab": (GObject.SignalFlags.RUN_FIRST, None, []),
|
"pointer-ungrab": (GObject.SignalFlags.RUN_FIRST, None, []),
|
||||||
"connected": (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-error": (GObject.SignalFlags.RUN_FIRST, None, [str, bool]),
|
||||||
"auth-rejected": (GObject.SignalFlags.RUN_FIRST, None, [str]),
|
"auth-rejected": (GObject.SignalFlags.RUN_FIRST, None, [str]),
|
||||||
"need-auth": (GObject.SignalFlags.RUN_FIRST, None, [bool, bool]),
|
"need-auth": (GObject.SignalFlags.RUN_FIRST, None, [bool, bool]),
|
||||||
@ -165,9 +165,9 @@ class Viewer(vmmGObject):
|
|||||||
def _get_grab_keys(self):
|
def _get_grab_keys(self):
|
||||||
return self._display.get_grab_keys().as_string()
|
return self._display.get_grab_keys().as_string()
|
||||||
|
|
||||||
def _emit_disconnected(self):
|
def _emit_disconnected(self, errdetails=None):
|
||||||
ssherr = self._tunnels.get_err_output()
|
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():
|
if channel.get_error():
|
||||||
error = channel.get_error().message
|
error = channel.get_error().message
|
||||||
logging.debug("Spice channel event=%s message=%s", event, error)
|
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):
|
def _fd_channel_event_cb(self, channel, event):
|
||||||
# When we see any event from the channel, release the
|
# When we see any event from the channel, release the
|
||||||
|
Loading…
Reference in New Issue
Block a user