]> xenbits.xensource.com Git - libvirt.git/commitdiff
Widening API change - accept empty path for virDomainBlockStats
authorThorsten Behrens <tbehrens@suse.com>
Fri, 14 Feb 2014 17:49:04 +0000 (18:49 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 20 Feb 2014 15:20:09 +0000 (16:20 +0100)
And provide domain summary stat in that case, for lxc backend.
Use case is a container inheriting all devices from the host,
e.g. when doing application containerization.

src/libvirt.c
tools/virsh-domain-monitor.c
tools/virsh.pod

index f38556aa1f9180258b14aac932d8d28bfea6d3d6..dcf6b53f0e519fa5a9d8d7dd5828cc6f49689107 100644 (file)
@@ -7750,7 +7750,9 @@ error:
  * an unambiguous source name of the block device (the <source
  * file='...'/> sub-element, such as "/path/to/image").  Valid names
  * can be found by calling virDomainGetXMLDesc() and inspecting
- * elements within //domain/devices/disk.
+ * elements within //domain/devices/disk. Some drivers might also
+ * accept the empty string for the @disk parameter, and then yield
+ * summary stats for the entire domain.
  *
  * Domains may have more than one block device.  To get stats for
  * each you should make multiple calls to this function.
@@ -7816,7 +7818,9 @@ error:
  * an unambiguous source name of the block device (the <source
  * file='...'/> sub-element, such as "/path/to/image").  Valid names
  * can be found by calling virDomainGetXMLDesc() and inspecting
- * elements within //domain/devices/disk.
+ * elements within //domain/devices/disk. Some drivers might also
+ * accept the empty string for the @disk parameter, and then yield
+ * summary stats for the entire domain.
  *
  * Domains may have more than one block device.  To get stats for
  * each you should make multiple calls to this function.
index de4afbb33feb4c5a896f5e783041fc37364d0bff..6291ca5fdfcd07cb1ad0a7aaa40f67a01b541c77 100644 (file)
@@ -888,7 +888,7 @@ static const vshCmdOptDef opts_domblkstat[] = {
     },
     {.name = "device",
      .type = VSH_OT_DATA,
-     .flags = VSH_OFLAG_REQ,
+     .flags = VSH_OFLAG_EMPTY_OK,
      .help = N_("block device")
     },
     {.name = "human",
@@ -954,9 +954,16 @@ cmdDomblkstat(vshControl *ctl, const vshCmd *cmd)
     if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
         return false;
 
+    /* device argument is optional now. if it's missing, supply empty
+       string to denote 'all devices'. A NULL device arg would violate
+       API contract.
+     */
     if (vshCommandOptStringReq(ctl, cmd, "device", &device) < 0)
         goto cleanup;
 
+    if (!device)
+        device = "";
+
     rc = virDomainBlockStatsFlags(dom, device, NULL, &nparams, 0);
 
     /* It might fail when virDomainBlockStatsFlags is not
index f221475e8c5afbe6c5c8c255de10b2882156dec5..a13a1c74c63e49207bcb0f49ba8875e4977668f6 100644 (file)
@@ -623,12 +623,13 @@ If I<--graceful> is specified, don't resort to extreme measures
 (e.g. SIGKILL) when the guest doesn't stop after a reasonable timeout;
 return an error instead.
 
-=item B<domblkstat> I<domain> I<block-device> [I<--human>]
+=item B<domblkstat> I<domain> [I<block-device>] [I<--human>]
 
 Get device block stats for a running domain.  A I<block-device> corresponds
 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).
+also B<domblklist> for listing these names). On a lxc domain, omitting the
+I<block-device> yields device block stats summarily for the entire domain.
 
 Use I<--human> for a more human readable output.