[virt-tools-list] [virt-viewer: PATCH 2/4 v2] Improve authentication error messages
Fabiano Fidêncio
fidencio at redhat.com
Wed Sep 24 11:49:27 UTC 2014
Adding a better error message to our default error message, based on the
libvirt error. Also, the libvirt error is shown as debug.
https://bugzilla.redhat.com/show_bug.cgi?id=1142742
---
v2:
- Add a special case with our own error message based on libvirt's error message
- Add a g_debug() output with the libvirt's error message
---
src/virt-viewer.c | 37 +++++++++++++++++++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)
diff --git a/src/virt-viewer.c b/src/virt-viewer.c
index 3d5a363..c6066c5 100644
--- a/src/virt-viewer.c
+++ b/src/virt-viewer.c
@@ -669,6 +669,36 @@ virt_viewer_auth_libvirt_credentials(virConnectCredentialPtr cred,
return ret;
}
+static gchar *
+virt_viewer_get_error_message_from_vir_error(VirtViewer *self,
+ virErrorPtr error)
+{
+ VirtViewerPrivate *priv = self->priv;
+ const gchar *error_details = NULL;
+ gchar *detailed_error_message = NULL;
+ gchar *error_message = g_strdup_printf(_("Unable to connect to libvirt with URI: %s."),
+ priv->uri ? priv->uri : _("[none]"));
+
+ g_debug("Error: %s", error->message);
+
+ /* For now we are only treating authentication errors. */
+ switch (error->code) {
+ case VIR_ERR_AUTH_FAILED:
+ error_details = _("Authentication failed.");
+ break;
+ default:
+ break;
+ }
+
+ if (error_details != NULL) {
+ detailed_error_message = g_strdup_printf("%s\n%s", error_message, error_details);
+ g_free(error_message);
+ return detailed_error_message;
+ }
+
+ return error_message;
+}
+
static int
virt_viewer_connect(VirtViewerApp *app)
{
@@ -698,8 +728,11 @@ virt_viewer_connect(VirtViewerApp *app)
oflags);
if (!priv->conn) {
if (!priv->auth_cancelled) {
- virt_viewer_app_simple_message_dialog(app, _("Unable to connect to libvirt with URI %s"),
- priv->uri ? priv->uri : _("[none]"));
+ gchar *error_message = virt_viewer_get_error_message_from_vir_error(self, virGetLastError());
+
+ virt_viewer_app_simple_message_dialog(app, error_message);
+
+ g_free(error_message);
}
return -1;
--
1.9.3
More information about the virt-tools-list
mailing list