
On 12.02.2016 11:08, Erik Skultety wrote:
Since we introduced listing API earlier in these series, it's time to wire up the API to the virt-admin client.
Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tools/virt-admin.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+)
diff --git a/tools/virt-admin.c b/tools/virt-admin.c index 1372963..23af274 100644 --- a/tools/virt-admin.c +++ b/tools/virt-admin.c @@ -300,6 +300,56 @@ cmdConnect(vshControl *ctl, const vshCmd *cmd) return !!priv->conn; }
+ +/* --------------- + * Command Srv-list + * --------------- + */ + +static const vshCmdInfo info_srv_list[] = { + {.name = "help", + .data = N_("list available servers on a daemon") + }, + {.name = "desc", + .data = N_("List all manageable servers on a daemon.") + }, + {.name = NULL} +}; + +static bool +cmdSrvList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) +{ + int nsrvs = 0; + size_t i; + bool ret = false; + const char *uri = NULL; + virAdmServerPtr *srvs = NULL; + vshAdmControlPtr priv = ctl->privData; + + /* Obtain a list of available servers on the daemon */ + if ((nsrvs = virAdmConnectListServers(priv->conn, &srvs, 0)) < 0) { + uri = virAdmConnectGetURI(priv->conn); + vshError(ctl, _("failed to obtain list of available servers from %s"), + NULLSTR(uri)); + goto cleanup; + } + + printf(" %-5s %-15s\n", "Id", "Name"); + printf("---------------\n"); + for (i = 0; i < nsrvs; i++) + vshPrint(ctl, " %-5zu %-15s\n", i, virAdmServerGetName(srvs[i])); + + ret = true; + cleanup: + if (srvs) { + for (i = 0; i < nsrvs; i++) + virAdmServerFree(srvs[i]); + VIR_FREE(srvs); + }
Or: for (i = 0; i < nsrvs && srvs; i++); I've noticed this could be changed in previous patch too. The similar pattern appears there. But it's your call what you prefer more. ACK Michal