*/
static const vshCmdInfo info_domblklist[] = {
{"help", N_("list all domain blocks")},
- {"desc", N_("Get the names of block devices for a domain.")},
+ {"desc", N_("Get the summary of block devices for a domain.")},
{NULL, NULL}
};
{"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")},
{"inactive", VSH_OT_BOOL, 0,
N_("get inactive rather than running configuration")},
+ {"details", VSH_OT_BOOL, 0,
+ N_("additionally display the type and device value")},
{NULL, 0, 0, NULL}
};
int ndisks;
xmlNodePtr *disks = NULL;
int i;
+ bool details = false;
if (vshCommandOptBool(cmd, "inactive"))
flags |= VIR_DOMAIN_XML_INACTIVE;
+ details = vshCommandOptBool(cmd, "details");
+
if (!vshConnectionUsability(ctl, ctl->conn))
return false;
if (ndisks < 0)
goto cleanup;
- vshPrint(ctl, "%-10s %s\n", _("Target"), _("Source"));
+ if (details)
+ vshPrint(ctl, "%-10s %-10s %-10s %s\n", _("Type"),
+ _("Device"), _("Target"), _("Source"));
+ else
+ vshPrint(ctl, "%-10s %s\n", _("Target"), _("Source"));
+
vshPrint(ctl, "------------------------------------------------\n");
for (i = 0; i < ndisks; i++) {
+ char *type;
+ char *device;
char *target;
char *source;
ctxt->node = disks[i];
+
+ if (details) {
+ type = virXPathString("string(./@type)", ctxt);
+ device = virXPathString("string(./@device)", ctxt);
+ }
+
target = virXPathString("string(./target/@dev)", ctxt);
if (!target) {
vshError(ctl, "unable to query block list");
"|./source/@dev"
"|./source/@dir"
"|./source/@name)", ctxt);
- vshPrint(ctl, "%-10s %s\n", target, source ? source : "-");
+ if (details) {
+ vshPrint(ctl, "%-10s %-10s %-10s %s\n", type, device,
+ target, source ? source : "-");
+ VIR_FREE(type);
+ VIR_FREE(device);
+ } else {
+ vshPrint(ctl, "%-10s %s\n", target, source ? source : "-");
+ }
+
VIR_FREE(target);
VIR_FREE(source);
}
file='name'/>) for one of the disk devices attached to I<domain> (see
also B<domblklist> for listing these names).
-=item B<domblklist> I<domain> [I<--inactive>]
-
-Print a table showing the names of all block devices associated with
-I<domain>, as well as the path to the source of each device. If
-I<--inactive> is specified, query the block devices that will be used
-on the next boot, rather than those currently in use by a running
-domain. Other contexts that require a block device name (such as
-I<domblkinfo> or I<snapshot-create> for disk snapshots) will accept
-either target or unique source names printed by this command.
+=item B<domblklist> I<domain> [I<--inactive>] [I<--details>]
+
+Print a table showing the brief information of all block devices
+associated with I<domain>. If I<--inactive> is specified, query the
+block devices that will be used on the next boot, rather than those
+currently in use by a running domain. If I<--details> is specified,
+disk type and device value will also be printed. Other contexts
+that require a block device name (such as I<domblkinfo> or
+I<snapshot-create> for disk snapshots) will accept either target
+or unique source names printed by this command.
=item B<domiflist> I<domain> [I<--inactive>]