[libvirt] [PATCH 06/17] virsh-volume: Update volume commands to use vshCommandOptStringReq
Osier Yang
jyang at redhat.com
Thu Jan 31 05:25:04 UTC 2013
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
More information about the libvir-list
mailing list