Disk "type" and "device" are generally interesting stuffs the user who wants to known too. To not breaking the scripts which parses the output field, new options "--details" is introduced to output the two introduced fields. --- tools/virsh.c | 32 +++++++++++++++++++++++++++++--- tools/virsh.pod | 19 ++++++++++--------- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index 734c55d..6f1acf6 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -1906,7 +1906,7 @@ cmdDomblkinfo(vshControl *ctl, const vshCmd *cmd) */ 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} }; @@ -1914,6 +1914,8 @@ static const vshCmdOptDef opts_domblklist[] = { {"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} }; @@ -1929,10 +1931,13 @@ cmdDomblklist(vshControl *ctl, const vshCmd *cmd) 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; @@ -1951,14 +1956,27 @@ cmdDomblklist(vshControl *ctl, const vshCmd *cmd) 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"); @@ -1968,7 +1986,15 @@ cmdDomblklist(vshControl *ctl, const vshCmd *cmd) "|./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); } diff --git a/tools/virsh.pod b/tools/virsh.pod index d9ca46c..9fd786d 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -512,15 +512,16 @@ to a unique target name (<target dev='name'/>) or source file (<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 be printed additionally. 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>] -- 1.7.7.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list