[virt-viewer: PATCH 2/4 v2] Improve authentication error messages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list




[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux