1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-01-11 09:17:52 +03:00

virsh: Implement vshTable API to secret-list

Signed-off-by: Simon Kobyda <skobyda@redhat.com>
This commit is contained in:
Simon Kobyda 2018-09-21 16:17:14 +02:00 committed by Michal Privoznik
parent 71029ef588
commit cf12efe088

View File

@ -35,6 +35,7 @@
#include "virsecret.h"
#include "virstring.h"
#include "virtime.h"
#include "vsh-table.h"
static virSecretPtr
virshCommandOptSecret(vshControl *ctl, const vshCmd *cmd, const char **name)
@ -507,6 +508,7 @@ cmdSecretList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
virshSecretListPtr list = NULL;
bool ret = false;
unsigned int flags = 0;
vshTablePtr table = NULL;
if (vshCommandOptBool(cmd, "ephemeral"))
flags |= VIR_CONNECT_LIST_SECRETS_EPHEMERAL;
@ -523,15 +525,17 @@ cmdSecretList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
if (!(list = virshSecretListCollect(ctl, flags)))
return false;
vshPrintExtra(ctl, " %-36s %s\n", _("UUID"), _("Usage"));
vshPrintExtra(ctl, "----------------------------------------"
"----------------------------------------\n");
table = vshTableNew(_("UUID"), _("Usage"), NULL);
if (!table)
goto cleanup;
for (i = 0; i < list->nsecrets; i++) {
virSecretPtr sec = list->secrets[i];
int usageType = virSecretGetUsageType(sec);
const char *usageStr = virSecretUsageTypeToString(usageType);
char uuid[VIR_UUID_STRING_BUFLEN];
virBuffer buf = VIR_BUFFER_INITIALIZER;
VIR_AUTOFREE(char *) usage = NULL;
if (virSecretGetUUIDString(sec, uuid) < 0) {
vshError(ctl, "%s", _("Failed to get uuid of secret"));
@ -539,18 +543,26 @@ cmdSecretList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
}
if (usageType) {
vshPrint(ctl, " %-36s %s %s\n",
uuid, usageStr,
virSecretGetUsageID(sec));
virBufferStrcat(&buf, usageStr, " ",
virSecretGetUsageID(sec), NULL);
usage = virBufferContentAndReset(&buf);
if (!usage)
goto cleanup;
if (vshTableRowAppend(table, uuid, usage, NULL) < 0)
goto cleanup;
} else {
vshPrint(ctl, " %-36s %s\n",
uuid, _("Unused"));
if (vshTableRowAppend(table, uuid, _("Unused"), NULL) < 0)
goto cleanup;
}
}
vshTablePrintToStdout(table, ctl);
ret = true;
cleanup:
vshTableFree(table);
virshSecretListFree(list);
return ret;
}