]> xenbits.xensource.com Git - libvirt.git/commitdiff
virsh: make negative values with vol-resize more convenient
authorJán Tomko <jtomko@redhat.com>
Wed, 27 May 2015 14:46:01 +0000 (16:46 +0200)
committerJán Tomko <jtomko@redhat.com>
Mon, 1 Jun 2015 11:56:49 +0000 (13:56 +0200)
When shrinking a volume by a certain size, instead of typing
  vol-resize volume 1G --delta --shrink
we allow the convience of specifying a negative value:
  vol-resize volume -1G --delta --shrink
getting the same results with one more character.

A negative value only makes sense as a delta. Imply the
--delta parameter if the value is negative.

Still require --shrink, because the operation is potentially
destructive.

tools/virsh-volume.c

index 5d6cc6a1b58e8c54c8e1e5849a955e0bad77ed0a..989ce87af429174d5927d1f0ffdad78f63ce6a28 100644 (file)
@@ -1124,14 +1124,10 @@ cmdVolResize(vshControl *ctl, const vshCmd *cmd)
     unsigned long long capacity = 0;
     unsigned int flags = 0;
     bool ret = false;
-    bool delta = false;
+    bool delta = vshCommandOptBool(cmd, "delta");
 
     if (vshCommandOptBool(cmd, "allocate"))
         flags |= VIR_STORAGE_VOL_RESIZE_ALLOCATE;
-    if (vshCommandOptBool(cmd, "delta")) {
-        delta = true;
-        flags |= VIR_STORAGE_VOL_RESIZE_DELTA;
-    }
     if (vshCommandOptBool(cmd, "shrink"))
         flags |= VIR_STORAGE_VOL_RESIZE_SHRINK;
 
@@ -1144,14 +1140,19 @@ cmdVolResize(vshControl *ctl, const vshCmd *cmd)
     if (*capacityStr == '-') {
         /* The API always requires a positive value; but we allow a
          * negative value for convenience.  */
-        if (delta && vshCommandOptBool(cmd, "shrink")) {
+        if (vshCommandOptBool(cmd, "shrink")) {
             capacityStr++;
+            delta = true;
         } else {
             vshError(ctl, "%s",
-                     _("negative size requires --delta and --shrink"));
+                     _("negative size requires --shrink"));
             goto cleanup;
         }
     }
+
+    if (delta)
+        flags |= VIR_STORAGE_VOL_RESIZE_DELTA;
+
     if (vshVolSize(capacityStr, &capacity) < 0) {
         vshError(ctl, _("Malformed size %s"), capacityStr);
         goto cleanup;