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

Re: [libvirt] [PATCH 06/17] virsh-volume: Update volume commands to use vshCommandOptStringReq



On 2013年01月22日 02:07, Peter Krempa wrote:
---
  tools/virsh-volume.c | 69 +++++++++++++++++++++-------------------------------
  1 file changed, 28 insertions(+), 41 deletions(-)

diff --git a/tools/virsh-volume.c b/tools/virsh-volume.c
index 466188c..0575166 100644
--- a/tools/virsh-volume.c
+++ b/tools/virsh-volume.c
@@ -52,13 +52,12 @@ vshCommandOptVolBy(vshControl *ctl, const vshCmd *cmd,
      const char *n = NULL, *p = NULL;
      virCheckFlags(VSH_BYUUID | VSH_BYNAME, NULL);

-    if (vshCommandOptString(cmd, optname,&n)<= 0)
+    if (vshCommandOptStringReq(ctl, cmd, optname,&n)<  0)
          return NULL;

-    if (pooloptname != NULL&&  vshCommandOptString(cmd, pooloptname,&p)<  0) {
-        vshError(ctl, "%s", _("missing option"));
+    if (pooloptname != NULL&&
+        vshCommandOptStringReq(ctl, cmd, pooloptname,&p)<  0)
          return NULL;
-    }

      if (p)
          pool = vshCommandOptPoolBy(ctl, cmd, pooloptname, name, flags);
@@ -182,10 +181,10 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
                                       VSH_BYNAME)))
          return false;

-    if (vshCommandOptString(cmd, "name",&name)<= 0)
+    if (vshCommandOptStringReq(ctl, cmd, "name",&name)<  0)
          goto cleanup;

-    if (vshCommandOptString(cmd, "capacity",&capacityStr)<= 0)
+    if (vshCommandOptStringReq(ctl, cmd, "capacity",&capacityStr)<  0)
          goto cleanup;

      if (vshVolSize(capacityStr,&capacity)<  0) {
@@ -199,14 +198,11 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
          goto cleanup;
      }

-    if (vshCommandOptString(cmd, "format",&format)<  0 ||
-        vshCommandOptString(cmd, "backing-vol",&snapshotStrVol)<  0 ||
-        vshCommandOptString(cmd, "backing-vol-format",
-&snapshotStrFormat)<  0) {
-        vshError(ctl, "%s", _("missing argument"));
+    if (vshCommandOptStringReq(ctl, cmd, "format",&format)<  0 ||
+        vshCommandOptStringReq(ctl, cmd, "backing-vol",&snapshotStrVol)<  0 ||
+        vshCommandOptStringReq(ctl, cmd, "backing-vol-format",
+&snapshotStrFormat)<  0)
          goto cleanup;
-    }
-

      virBufferAddLit(&buf, "<volume>\n");
      virBufferAsprintf(&buf, "<name>%s</name>\n", name);
@@ -340,9 +336,9 @@ cmdVolCreate(vshControl *ctl, const vshCmd *cmd)
      virStoragePoolPtr pool;
      virStorageVolPtr vol;
      const char *from = NULL;
-    bool ret = true;
+    bool ret = false;
      unsigned int flags = 0;
-    char *buffer;
+    char *buffer = NULL;

      if (vshCommandOptBool(cmd, "prealloc-metadata"))
          flags |= VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;
@@ -350,29 +346,26 @@ cmdVolCreate(vshControl *ctl, const vshCmd *cmd)
                                             VSH_BYNAME)))
          return false;

-    if (vshCommandOptString(cmd, "file",&from)<= 0) {
-        virStoragePoolFree(pool);
-        return false;
-    }
+    if (vshCommandOptStringReq(ctl, cmd, "file",&from)<  0)
+        goto cleanup;

      if (virFileReadAll(from, VSH_MAX_XML_FILE,&buffer)<  0) {
-        vshReportError(ctl);
-        virStoragePoolFree(pool);
-        return false;
+        vshSaveLibvirtError();
+        goto cleanup;
      }

-    vol = virStorageVolCreateXML(pool, buffer, flags);
-    VIR_FREE(buffer);
-    virStoragePoolFree(pool);
-
-    if (vol != NULL) {
+    if ((vol = virStorageVolCreateXML(pool, buffer, flags))) {
          vshPrint(ctl, _("Vol %s created from %s\n"),
                   virStorageVolGetName(vol), from);
          virStorageVolFree(vol);
+        ret = true;
      } else {
          vshError(ctl, _("Failed to create vol from %s"), from);
-        ret = false;
      }
+
+cleanup:
+    VIR_FREE(buffer);
+    virStoragePoolFree(pool);
      return ret;
  }

@@ -429,9 +422,9 @@ cmdVolCreateFrom(vshControl *ctl, const vshCmd *cmd)

      if (vshCommandOptBool(cmd, "prealloc-metadata"))
          flags |= VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;
-    if (vshCommandOptString(cmd, "file",&from)<= 0) {
+
+    if (vshCommandOptStringReq(ctl, cmd, "file",&from)<  0)
          goto cleanup;
-    }

      if (!(inputvol = vshCommandOptVol(ctl, cmd, "vol", "inputpool", NULL)))
          goto cleanup;
@@ -548,7 +541,7 @@ cmdVolClone(vshControl *ctl, const vshCmd *cmd)
          goto cleanup;
      }

-    if (vshCommandOptString(cmd, "newname",&name)<= 0)
+    if (vshCommandOptStringReq(ctl, cmd, "newname",&name)<  0)
          goto cleanup;

      origxml = virStorageVolGetXMLDesc(origvol, 0);
@@ -658,10 +651,8 @@ cmdVolUpload(vshControl *ctl, const vshCmd *cmd)
          return false;
      }

-    if (vshCommandOptString(cmd, "file",&file)<  0) {
-        vshError(ctl, _("file must not be empty"));
+    if (vshCommandOptStringReq(ctl, cmd, "file",&file)<  0)
          goto cleanup;
-    }

      if ((fd = open(file, O_RDONLY))<  0) {
          vshError(ctl, _("cannot read %s"), file);
@@ -764,10 +755,8 @@ cmdVolDownload(vshControl *ctl, const vshCmd *cmd)
      if (!(vol = vshCommandOptVol(ctl, cmd, "vol", "pool",&name)))
          return false;

-    if (vshCommandOptString(cmd, "file",&file)<  0) {
-        vshError(ctl, _("file must not be empty"));
+    if (vshCommandOptStringReq(ctl, cmd, "file",&file)<  0)
          goto cleanup;
-    }

      if ((fd = open(file, O_WRONLY|O_CREAT|O_EXCL, 0666))<  0) {
          if (errno != EEXIST ||
@@ -906,10 +895,8 @@ cmdVolWipe(vshControl *ctl, const vshCmd *cmd)
          return false;
      }

-    if (vshCommandOptString(cmd, "algorithm",&algorithm_str)<  0) {
-        vshError(ctl, "%s", _("missing argument"));
+    if (vshCommandOptStringReq(ctl, cmd, "algorithm",&algorithm_str)<  0)
          goto out;
-    }

      if (algorithm_str&&
          (algorithm = virStorageVolWipeAlgorithmTypeFromString(algorithm_str))<  0) {
@@ -1072,7 +1059,7 @@ cmdVolResize(vshControl *ctl, const vshCmd *cmd)
      if (!(vol = vshCommandOptVol(ctl, cmd, "vol", "pool", NULL)))
          return false;

-    if (vshCommandOptString(cmd, "capacity",&capacityStr)<= 0)
+    if (vshCommandOptStringReq(ctl, cmd, "capacity",&capacityStr)<= 0)
          goto cleanup;
      virSkipSpaces(&capacityStr);
      if (*capacityStr == '-') {

ACK


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