[libvirt] [PATCH 3/6] Report secret usage error message similarly

John Ferlan jferlan at redhat.com
Thu Aug 8 00:43:06 UTC 2013


Each of the modules handled reporting error messages from the secret fetching
slightly differently with respect to the error. Provide a similar message
for each error case and provide as much data as possible.
---
 src/qemu/qemu_command.c             | 28 ++++++++++++++++++++++------
 src/storage/storage_backend_iscsi.c | 28 ++++++++++++++++++++++------
 src/storage/storage_backend_rbd.c   | 35 ++++++++++++++++++++++++++++-------
 3 files changed, 72 insertions(+), 19 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index b811e1d..24e891b 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -3043,18 +3043,34 @@ qemuGetSecretString(virConnectPtr conn,
     }
 
     if (!sec) {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("%s username '%s' specified but secret not found"),
-                       scheme, username);
+        if (diskSecretType == VIR_DOMAIN_DISK_SECRET_TYPE_UUID) {
+            virReportError(VIR_ERR_NO_SECRET,
+                           _("%s username '%s' specified but secret for "
+                             "uuid '%s' not found"),
+                           scheme, username, uuid);
+        } else {
+            virReportError(VIR_ERR_NO_SECRET,
+                           _("%s username '%s' specified but secret for "
+                             "usage value '%s' not found"),
+                           scheme, username, usage);
+        }
         goto cleanup;
     }
 
     secret = (char *)conn->secretDriver->secretGetValue(sec, &secret_size, 0,
                                                         VIR_SECRET_GET_VALUE_INTERNAL_CALL);
     if (!secret) {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("could not get value of the secret for username %s"),
-                       username);
+        if (diskSecretType == VIR_DOMAIN_DISK_SECRET_TYPE_UUID) {
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                           _("could not get value of the secret for "
+                             "username '%s' using uuid '%s'"),
+                           username, uuid);
+        } else {
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                           _("could not get value of the secret for "
+                             "username '%s' using usage value '%s'"),
+                           username, usage);
+        }
         goto cleanup;
     }
 
diff --git a/src/storage/storage_backend_iscsi.c b/src/storage/storage_backend_iscsi.c
index ee8dd2e..55bf544 100644
--- a/src/storage/storage_backend_iscsi.c
+++ b/src/storage/storage_backend_iscsi.c
@@ -732,15 +732,31 @@ virStorageBackendISCSISetAuth(const char *portal,
             conn->secretDriver->secretGetValue(secret, &secret_size, 0,
                                                VIR_SECRET_GET_VALUE_INTERNAL_CALL);
         if (!secret_value) {
-            virReportError(VIR_ERR_INTERNAL_ERROR,
-                           _("could not get the value of the secret "
-                             "for username %s"), chap.username);
+            if (chap.secret.uuidUsable) {
+                virReportError(VIR_ERR_INTERNAL_ERROR,
+                               _("could not get the value of the secret "
+                                 "for username %s using uuid '%s'"),
+                                 chap.username, chap.secret.uuid);
+            } else {
+                virReportError(VIR_ERR_INTERNAL_ERROR,
+                               _("could not get the value of the secret "
+                                 "for username %s using usage value '%s'"),
+                                 chap.username, chap.secret.usage);
+            }
             goto cleanup;
         }
     } else {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("username '%s' specified but secret not found"),
-                       chap.username);
+        if (chap.secret.uuidUsable) {
+            virReportError(VIR_ERR_NO_SECRET,
+                           _("username '%s' specified but the secret for "
+                             "uuid '%s' not found"),
+                           chap.username, chap.secret.uuid);
+        } else {
+            virReportError(VIR_ERR_NO_SECRET,
+                           _("username '%s' specified but the secret for "
+                             "usage value '%s' not found"),
+                           chap.username, chap.secret.usage);
+        }
         goto cleanup;
     }
 
diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c
index e3340f6..9c6d179 100644
--- a/src/storage/storage_backend_rbd.c
+++ b/src/storage/storage_backend_rbd.c
@@ -91,19 +91,40 @@ static int virStorageBackendRBDOpenRADOSConn(virStorageBackendRBDStatePtr *ptr,
         }
 
         if (secret == NULL) {
-            virReportError(VIR_ERR_NO_SECRET, "%s",
-                           _("failed to find the secret"));
+            if (pool->def->source.auth.cephx.secret.uuidUsable) {
+                virReportError(VIR_ERR_NO_SECRET,
+                               _("username '%s' specified but the secret for "
+                                 "uuid '%s' not found"),
+                                 pool->def->source.auth.cephx.username,
+                                 pool->def->source.auth.cephx.secret.uuid);
+            } else {
+                virReportError(VIR_ERR_NO_SECRET,
+                               _("username '%s' specified but the secret for "
+                                 "usage value '%s' not found"),
+                                 pool->def->source.auth.cephx.username,
+                                 pool->def->source.auth.cephx.secret.usage);
+            }
             goto cleanup;
         }
 
-        secret_value = conn->secretDriver->secretGetValue(secret, &secret_value_size, 0,
+        secret_value = conn->secretDriver->secretGetValue(secret,
+                                                          &secret_value_size, 0,
                                                           VIR_SECRET_GET_VALUE_INTERNAL_CALL);
 
         if (!secret_value) {
-            virReportError(VIR_ERR_INTERNAL_ERROR,
-                           _("could not get the value of the secret "
-                             "for username %s"),
-                           pool->def->source.auth.cephx.username);
+            if (pool->def->source.auth.cephx.secret.uuidUsable) {
+                virReportError(VIR_ERR_INTERNAL_ERROR,
+                               _("could not get the value of the secret "
+                                 "for username '%s' using uuid '%s'"),
+                               pool->def->source.auth.cephx.username,
+                               pool->def->source.auth.cephx.secret.uuid);
+            } else {
+                virReportError(VIR_ERR_INTERNAL_ERROR,
+                               _("could not get the value of the secret "
+                                 "for username '%s' using usage value '%s'"),
+                               pool->def->source.auth.cephx.username,
+                               pool->def->source.auth.cephx.secret.usage);
+            }
             goto cleanup;
         }
 
-- 
1.8.3.1




More information about the libvir-list mailing list