[libvirt] [PATCH 3/6] list: Implement listAllSecrets
Peter Krempa
pkrempa at redhat.com
Wed Sep 5 14:22:10 UTC 2012
On 09/05/12 08:28, Osier Yang wrote:
> Simply returns the object list. No filtering.
>
> src/secret/secret_driver.c: Implement listAllSecrets
> ---
> src/secret/secret_driver.c | 59 +++++++++++++++++++++++++++++++++++++++++++-
> 1 files changed, 58 insertions(+), 1 deletions(-)
>
> diff --git a/src/secret/secret_driver.c b/src/secret/secret_driver.c
> index 7f92776..ed759ed 100644
> --- a/src/secret/secret_driver.c
> +++ b/src/secret/secret_driver.c
> @@ -601,7 +601,6 @@ cleanup:
> return -1;
> }
>
> -
Please don't include this hunk here. Two empty lines between functions
are pretty common (this patch adds that too at the end of
secretListAllSecrets().
> static const char *
> secretUsageIDForDef(virSecretDefPtr def)
> {
> @@ -620,6 +619,63 @@ secretUsageIDForDef(virSecretDefPtr def)
> }
> }
>
> +static int
> +secretListAllSecrets(virConnectPtr conn,
> + virSecretPtr **secrets,
> + unsigned int flags) {
> + virSecretDriverStatePtr driver = conn->secretPrivateData;
> + virSecretPtr *tmp_secrets = NULL;
> + int nsecrets = 0;
> + int ret_nsecrets = 0;
> + virSecretPtr secret = NULL;
> + virSecretEntryPtr entry = NULL;
> + int i = 0;
> + int ret = -1;
> +
> + virCheckFlags(0, -1);
> +
> + secretDriverLock(driver);
> +
> + for (entry = driver->secrets; entry != NULL; entry = entry->next)
> + nsecrets++;
> +
> + if (!secrets) {
> + ret = nsecrets;
> + goto cleanup;
> + }
> +
> + if (VIR_ALLOC_N(tmp_secrets, nsecrets + 1) < 0) {
> + virReportOOMError();
> + goto cleanup;
> + }
> +
> + for (entry = driver->secrets; entry != NULL; entry = entry->next) {
> + if (!(secret = virGetSecret(conn,
> + entry->def->uuid,
> + entry->def->usage_type,
> + secretUsageIDForDef(entry->def))))
> + goto cleanup;
> + tmp_secrets[ret_nsecrets++] = secret;
> + }
> +
> + *secrets = tmp_secrets;
> + tmp_secrets = NULL;
> + ret = ret_nsecrets;
> +
> + cleanup:
> + secretDriverUnlock(driver);
> + if (tmp_secrets) {
> + for (i = 0; i < ret_nsecrets; i ++) {
> + if (tmp_secrets[i])
> + virSecretFree(tmp_secrets[i]);
> + }
> + }
> + VIR_FREE(tmp_secrets);
> +
> + return ret;
> +}
> +
> +
> static virSecretPtr
> secretLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
> {
Otherwise looks OK.
Peter
More information about the libvir-list
mailing list