Signed-off-by: Simon Kobyda <skobyda(a)redhat.com>
---
tools/virt-admin.c | 46 ++++++++++++++++++++++++++++++++++++----------
1 file changed, 36 insertions(+), 10 deletions(-)
diff --git a/tools/virt-admin.c b/tools/virt-admin.c
index 63822bc13e..ac4c72efec 100644
--- a/tools/virt-admin.c
+++ b/tools/virt-admin.c
@@ -40,6 +40,7 @@
#include "virgettext.h"
#include "virtime.h"
#include "virt-admin-completer.h"
+#include "vsh-table.h"
/* Gnulib doesn't guarantee SA_SIGINFO support. */
#ifndef SA_SIGINFO
@@ -382,6 +383,7 @@ cmdSrvList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
char *uri = NULL;
virAdmServerPtr *srvs = NULL;
vshAdmControlPtr priv = ctl->privData;
+ vshTablePtr table = NULL;
/* Obtain a list of available servers on the daemon */
if ((nsrvs = virAdmConnectListServers(priv->conn, &srvs, 0)) < 0) {
@@ -391,13 +393,28 @@ cmdSrvList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
goto cleanup;
}
- vshPrintExtra(ctl, " %-5s %-15s\n", "Id", "Name");
- vshPrintExtra(ctl, "---------------\n");
- for (i = 0; i < nsrvs; i++)
- vshPrint(ctl, " %-5zu %-15s\n", i, virAdmServerGetName(srvs[i]));
+ table = vshTableNew("Id", "Name", NULL);
+ if (!table)
+ goto cleanup;
+
+ for (i = 0; i < nsrvs; i++) {
+ char *idStr;
+ if (virAsprintf(&idStr, "%lu", i) < 0)
+ goto cleanup;
+
+ if (vshTableRowAppend(table,
+ idStr,
+ virAdmServerGetName(srvs[i]),
+ NULL) < 0)
+ goto cleanup;
+ VIR_FREE(idStr);
+ }
+
+ vshTablePrintToStdout(table, ctl);
ret = true;
cleanup:
+ vshTableFree(table);
if (srvs) {
for (i = 0; i < nsrvs; i++)
virAdmServerFree(srvs[i]);
@@ -617,6 +634,7 @@ cmdSrvClientsList(vshControl *ctl, const vshCmd *cmd)
virAdmServerPtr srv = NULL;
virAdmClientPtr *clts = NULL;
vshAdmControlPtr priv = ctl->privData;
+ vshTablePtr table = NULL;
if (vshCommandOptStringReq(ctl, cmd, "server", &srvname) < 0)
return false;
@@ -631,12 +649,12 @@ cmdSrvClientsList(vshControl *ctl, const vshCmd *cmd)
goto cleanup;
}
- vshPrintExtra(ctl, " %-5s %-15s %-15s\n%s\n", _("Id"),
_("Transport"),
- _("Connected since"),
- "-------------------------"
- "-------------------------");
+ table = vshTableNew("Id", "Transport", "Connected
sice", NULL);
+ if (!table)
+ goto cleanup;
for (i = 0; i < nclts; i++) {
+ char *idStr;
virAdmClientPtr client = clts[i];
id = virAdmClientGetID(client);
transport = virAdmClientGetTransport(client);
@@ -644,14 +662,22 @@ cmdSrvClientsList(vshControl *ctl, const vshCmd *cmd)
×tr) < 0)
goto cleanup;
- vshPrint(ctl, " %-5llu %-15s %-15s\n",
- id, vshAdmClientTransportToString(transport), timestr);
+ if (virAsprintf(&idStr, "%llu", id) < 0)
+ goto cleanup;
+ if (vshTableRowAppend(table, idStr,
+ vshAdmClientTransportToString(transport),
+ timestr, NULL) < 0)
+ goto cleanup;
VIR_FREE(timestr);
+ VIR_FREE(idStr);
}
+ vshTablePrintToStdout(table, ctl);
+
ret = true;
cleanup:
+ vshTableFree(table);
if (clts) {
for (i = 0; i < nclts; i++)
virAdmClientFree(clts[i]);
--
2.17.1