diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2010-04-27 20:31:58 +0100 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2010-04-29 17:21:32 +0100 |
commit | 7703c2c90a46c26df1bc804d770c726ceb526b9b (patch) | |
tree | a07412378006ea6379b1eb0da1cd5bd6f8ce4212 | |
parent | Implement virDomainGetBlockInfo in QEMU driver (diff) | |
download | libvirt-7703c2c90a46c26df1bc804d770c726ceb526b9b.tar.gz libvirt-7703c2c90a46c26df1bc804d770c726ceb526b9b.tar.bz2 libvirt-7703c2c90a46c26df1bc804d770c726ceb526b9b.zip |
Add new domblkinfo command to virsh
virsh # domblkinfo demoguest /dev/hda2
Capacity: 1048576000
Allocation: 104857600
Physical: 104857600
* tools/virsh.c: Implement domblkinfo command mapping to the
new virDomainGetBlockInfo API
-rw-r--r-- | tools/virsh.c | 48 | ||||
-rw-r--r-- | tools/virsh.pod | 4 |
2 files changed, 52 insertions, 0 deletions
diff --git a/tools/virsh.c b/tools/virsh.c index a1ad637f6..eb11a78ed 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -1045,6 +1045,53 @@ cmdDomMemStat(vshControl *ctl, const vshCmd *cmd) } /* + * "domblkinfo" command + */ +static const vshCmdInfo info_domblkinfo[] = { + {"help", N_("domain block device size information")}, + {"desc", N_("Get block device size info for a domain.")}, + {NULL, NULL} +}; + +static const vshCmdOptDef opts_domblkinfo[] = { + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")}, + {"device", VSH_OT_DATA, VSH_OFLAG_REQ, N_("block device")}, + {NULL, 0, 0, NULL} +}; + +static int +cmdDomblkinfo(vshControl *ctl, const vshCmd *cmd) +{ + virDomainBlockInfo info; + virDomainPtr dom; + int ret = TRUE; + const char *device; + + if (!vshConnectionUsability(ctl, ctl->conn, TRUE)) + return FALSE; + + if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) + return FALSE; + + if (!(device = vshCommandOptString (cmd, "device", NULL))) { + virDomainFree(dom); + return FALSE; + } + + if (virDomainGetBlockInfo(dom, device, &info, 0) < 0) { + virDomainFree(dom); + return FALSE; + } + + vshPrint(ctl, "%-15s %llu\n", _("Capacity:"), info.capacity); + vshPrint(ctl, "%-15s %llu\n", _("Allocation:"), info.allocation); + vshPrint(ctl, "%-15s %llu\n", _("Physical:"), info.physical); + + virDomainFree(dom); + return ret; +} + +/* * "suspend" command */ static const vshCmdInfo info_suspend[] = { @@ -8661,6 +8708,7 @@ static const vshCmdDef commands[] = { {"domblkstat", cmdDomblkstat, opts_domblkstat, info_domblkstat}, {"domifstat", cmdDomIfstat, opts_domifstat, info_domifstat}, {"dommemstat", cmdDomMemStat, opts_dommemstat, info_dommemstat}, + {"domblkinfo", cmdDomblkinfo, opts_domblkinfo, info_domblkinfo}, {"domxml-from-native", cmdDomXMLFromNative, opts_domxmlfromnative, info_domxmlfromnative}, {"domxml-to-native", cmdDomXMLToNative, opts_domxmltonative, info_domxmltonative}, {"dumpxml", cmdDumpXML, opts_dumpxml, info_dumpxml}, diff --git a/tools/virsh.pod b/tools/virsh.pod index 09ad3e2b1..cf7585dd2 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -296,6 +296,10 @@ Get network interface stats for a running domain. Get memory stats for a running domain. +=item B<domblkinfo> I<domain> I<block-device> + +Get block device size info for a domain. + =item B<dominfo> I<domain-id> Returns basic information about the domain. |