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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list