[libvirt] [PATCH v2] virsh: Add more human-friendly output of domblkstat command

Users of virsh complain that output of the domblkstat command is not intuitive enough. This patch adds explanation of fields returned by this command to the help section for domblkstat and the man page of virsh. Also a switch --human is added for domblkstat that prints the fields with more descriptive texts. https://bugzilla.redhat.com/show_bug.cgi?id=731656 Changes to v1: -Rebased to current head --- tools/virsh.c | 52 +++++++++++++++++++++++++++++++++++++++++----------- tools/virsh.pod | 11 ++++++++++- 2 files changed, 51 insertions(+), 12 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index c7240e5..09337cb 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -1054,13 +1054,21 @@ cleanup: */ static const vshCmdInfo info_domblkstat[] = { {"help", N_("get device block stats for a domain")}, - {"desc", N_("Get device block stats for a running domain.")}, + {"desc", N_("Get device block stats for a running domain.\n\n" + " Explanation of fields:\n" + " rd_req - count of read requests\n" + " rd_bytes - count of read bytes\n" + " wr_req - count of write requests\n" + " wr_bytes - count of written bytes\n" + " errs - error count")}, {NULL,NULL} }; static const vshCmdOptDef opts_domblkstat[] = { {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")}, {"device", VSH_OT_DATA, VSH_OFLAG_REQ, N_("block device")}, + {"human", VSH_OT_BOOL, 0, N_("print a more human readable output")}, + {NULL, 0, 0, NULL} }; @@ -1070,6 +1078,7 @@ cmdDomblkstat (vshControl *ctl, const vshCmd *cmd) virDomainPtr dom; const char *name = NULL, *device = NULL; struct _virDomainBlockStats stats; + int humanReadable = vshCommandOptBool(cmd, "human"); if (!vshConnectionUsability (ctl, ctl->conn)) return false; @@ -1088,20 +1097,41 @@ cmdDomblkstat (vshControl *ctl, const vshCmd *cmd) return false; } - if (stats.rd_req >= 0) - vshPrint (ctl, "%s rd_req %lld\n", device, stats.rd_req); + if (humanReadable) { + /* human friendly output */ + vshPrint(ctl, N_("Device: %s\n"), device); + + if (stats.rd_req >= 0) + vshPrint (ctl, N_("read request count: %lld\n"), stats.rd_req); + + if (stats.rd_bytes >= 0) + vshPrint (ctl, N_("number of read bytes: %lld\n"), stats.rd_bytes); + + if (stats.wr_req >= 0) + vshPrint (ctl, N_("write request count: %lld\n"), stats.wr_req); - if (stats.rd_bytes >= 0) - vshPrint (ctl, "%s rd_bytes %lld\n", device, stats.rd_bytes); + if (stats.wr_bytes >= 0) + vshPrint (ctl, N_("number of written bytes: %lld\n"), stats.wr_bytes); - if (stats.wr_req >= 0) - vshPrint (ctl, "%s wr_req %lld\n", device, stats.wr_req); + if (stats.errs >= 0) + vshPrint (ctl, N_("error count: %lld\n"), stats.errs); + } else { + /* script friendly output */ + if (stats.rd_req >= 0) + vshPrint (ctl, "%s rd_req %lld\n", device, stats.rd_req); + + if (stats.rd_bytes >= 0) + vshPrint (ctl, "%s rd_bytes %lld\n", device, stats.rd_bytes); - if (stats.wr_bytes >= 0) - vshPrint (ctl, "%s wr_bytes %lld\n", device, stats.wr_bytes); + if (stats.wr_req >= 0) + vshPrint (ctl, "%s wr_req %lld\n", device, stats.wr_req); - if (stats.errs >= 0) - vshPrint (ctl, "%s errs %lld\n", device, stats.errs); + if (stats.wr_bytes >= 0) + vshPrint (ctl, "%s wr_bytes %lld\n", device, stats.wr_bytes); + + if (stats.errs >= 0) + vshPrint (ctl, "%s errs %lld\n", device, stats.errs); + } virDomainFree(dom); return true; diff --git a/tools/virsh.pod b/tools/virsh.pod index 30c0721..c333b2a 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -501,10 +501,19 @@ be lost once the guest stops running, but the snapshot contents still exist, and a new domain with the same name and UUID can restore the snapshot metadata with B<snapshot-create>. -=item B<domblkstat> I<domain> I<block-device> +=item B<domblkstat> I<domain> I<block-device> [I<--human>] Get device block stats for a running domain. +Use I<--human> for a more human readable output. + +B<Explanation of fields:> + rd_req - count of read requests + rd_bytes - count of read bytes + wr_req - count of write requests + wr_bytes - count of written bytes + errs - error count + =item B<domifstat> I<domain> I<interface-device> Get network interface stats for a running domain. -- 1.7.3.4

On Mon, Sep 05, 2011 at 05:46:39PM +0200, Peter Krempa wrote:
Users of virsh complain that output of the domblkstat command is not intuitive enough. This patch adds explanation of fields returned by this command to the help section for domblkstat and the man page of virsh. Also a switch --human is added for domblkstat that prints the fields with more descriptive texts.
https://bugzilla.redhat.com/show_bug.cgi?id=731656
Changes to v1: -Rebased to current head
Sounds good ... but in the meantime that command changed to us the more complex API virDomainBlockStatsFlags which can return even more values (and potentially fallback to the old one. So I think this patch need to be updated to the new version of that function. The current patch can be used nearly as-is for the fallback case, but really --human should document the new fields, check with Osier :-) Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/

Dňa 6.9.2011 10:39, Daniel Veillard wrote / napísal(a):
Users of virsh complain that output of the domblkstat command is not intuitive enough. This patch adds explanation of fields returned by this command to the help section for domblkstat and the man page of virsh. Also a switch --human is added for domblkstat that prints the fields with more descriptive texts.
https://bugzilla.redhat.com/show_bug.cgi?id=731656
Changes to v1: -Rebased to current head Sounds good ... but in the meantime that command changed to us the more complex API virDomainBlockStatsFlags which can return even more values (and potentially fallback to the old one. So I think this patch need to be updated to the new version of that function. The current
On Mon, Sep 05, 2011 at 05:46:39PM +0200, Peter Krempa wrote: patch can be used nearly as-is for the fallback case, but really --human should document the new fields, check with Osier :-)
Daniel
Uh, i didn't notice it somehow. Sorry. I'll update it ASAP :) Peter
participants (2)
-
Daniel Veillard
-
Peter Krempa