On 09/30/2014 08:20 PM, Tomoki Sekiyama wrote:
Add a "domfsinfo" command that shows a list of filesystems
info mounted in
the guest.
Perhaps a small example of the command being run and expected output
would be nice.
Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama(a)hds.com>
---
tools/virsh-domain.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 70 insertions(+)
You'll need to modify virsh.pod (e.g. man page) in order to complete
this work. Be sure to note that the guest agent is required - there are
examples within other commands.
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index ce59406..cc07bc3 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -11999,6 +11999,70 @@ cmdDomFSThaw(vshControl *ctl, const vshCmd *cmd)
return ret >= 0;
}
+static const vshCmdInfo info_domfsinfo[] = {
+ {.name = "help",
+ .data = N_("Get information of domain's mounted filesystems.")
+ },
+ {.name = "desc",
+ .data = N_("Get information of domain's mounted filesystems.")
+ },
+ {.name = NULL}
+};
+
+static const vshCmdOptDef opts_domfsinfo[] = {
+ {.name = "domain",
+ .type = VSH_OT_DATA,
+ .flags = VSH_OFLAG_REQ,
+ .help = N_("domain name, id or uuid")
+ },
+ {.name = NULL}
+};
+
+static bool
+cmdDomFSInfo(vshControl *ctl, const vshCmd *cmd)
+{
+ virDomainPtr dom = NULL;
+ int ret = -1;
+ size_t i;
+ virDomainFSInfoPtr *info;
+ char **alias;
+
+ if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
+ return false;
+
+ ret = virDomainGetFSInfo(dom, &info, 0);
+ if (ret < 0) {
+ vshError(ctl, _("Unable to get filesystems information"));
s/get filesystems /get domain filesystem /
+ goto cleanup;
+ }
+
+ if (info) {
+ vshPrintExtra(ctl, "%-36s %-8s %-8s %s\n",
+ _("Mountpoint"), _("Name"),
_("Type"), _("Target"));
+ vshPrintExtra(ctl,
"-------------------------------------------------------------------\n");
+ for (i = 0; i < ret; i++) {
+ vshPrintExtra(ctl, "%-36s %-8s %-8s ",
+ info[i]->mountpoint, info[i]->name, info[i]->type);
+ alias = info[i]->devAlias;
+ if (alias) {
+ while (*alias) {
+ vshPrintExtra(ctl, "%s", *alias++);
+ if (*alias)
+ vshPrint(ctl, ",");
Theoretically speaking this could be very wide... You may want to
consider some sort of verbose option which would print all aliases
beyond the first alias found. Not sure of the best way to handle this
though and whether there are "other" examples.
John
+ }
+ }
+ vshPrint(ctl, "\n");
+
+ virDomainFSInfoFree(info[i]);
+ }
+ VIR_FREE(info);
+ }
+
+ cleanup:
+ virDomainFree(dom);
+ return ret >= 0;
+}
+
const vshCmdDef domManagementCmds[] = {
{.name = "attach-device",
.handler = cmdAttachDevice,
@@ -12158,6 +12222,12 @@ const vshCmdDef domManagementCmds[] = {
.info = info_domfsthaw,
.flags = 0
},
+ {.name = "domfsinfo",
+ .handler = cmdDomFSInfo,
+ .opts = opts_domfsinfo,
+ .info = info_domfsinfo,
+ .flags = 0
+ },
{.name = "domfstrim",
.handler = cmdDomFSTrim,
.opts = opts_domfstrim,
--
libvir-list mailing list
libvir-list(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list