[libvirt] [PATCH 5/6] Add new domblkinfo command to virsh

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  virsh # domblkinfo demoguest /dev/hda2
  Capacity:       1048576000
  Allocation:     104857600
  Physical:       104857600

* tools/virsh.c: Implement domblkinfo command mapping to the
  new virDomainGetBlockInfo API
---
 tools/virsh.c   |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 tools/virsh.pod |    4 ++++
 2 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/tools/virsh.c b/tools/virsh.c
index 5bcf0ed..ed73061 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[] = {
@@ -8664,6 +8711,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 09ad3e2..cf7585d 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.
-- 
1.6.6.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]