aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2010-04-27 20:31:58 +0100
committerDaniel P. Berrange <berrange@redhat.com>2010-04-29 17:21:32 +0100
commit7703c2c90a46c26df1bc804d770c726ceb526b9b (patch)
treea07412378006ea6379b1eb0da1cd5bd6f8ce4212
parentImplement virDomainGetBlockInfo in QEMU driver (diff)
downloadlibvirt-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.c48
-rw-r--r--tools/virsh.pod4
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.