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