[Libvir] PATCH: 7/16: virsh core commands
Daniel Veillard
veillard at redhat.com
Mon Feb 18 11:12:47 UTC 2008
On Tue, Feb 12, 2008 at 04:34:34AM +0000, Daniel P. Berrange wrote:
> This patch adds new virsh commands for all the libvirt storage APIs
> allowing their use from the shell. The style follows that of the
> existing domain & network commands, so I won't bother listing them
> in great detail.
>
> The only complexity is in dealing with the vol-XXX commands. These
> can accept either a full volume path, a volume key (equiv of UUID)
> or a pool name + volume name. The latter presents a difficulty
> because our GetOpt() style parser does not know how to have commands
> which take either 1 or 2 args - it can do, one or the other but not
> both. So to specify a pool name + volume name requires the slightly
> ugly use of --pool flag. Most people will probably just use paths
> though.
Sounds fine.
> @@ -331,7 +349,7 @@ cmdMonitorProgress(vshControl *ctl, vshC
>
> do {
> if (virJobGetInfo(job, info) < 0) {
> - vshError(ctl, FALSE, _("Failed to get job status"));
> + vshError(ctl, FALSE, "%s", _("Failed to get job status"));
> return -1;
> }
>
Those vshError localization changes are fine and independant from storage,
let's push them in CVS in any case.
[...]
> +static int
> +cmdPoolDelete(vshControl * ctl, vshCmd * cmd)
> +{
> + virStoragePoolPtr pool;
> + int ret = TRUE;
> + char *name;
> +
> + if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
> + return FALSE;
> +
> + if (!(pool = vshCommandOptPool(ctl, cmd, "pool", &name)))
> + return FALSE;
> +
> + if (virStoragePoolDelete(pool, 0) == 0) {
> + vshPrint(ctl, _("Pool %s deleteed\n"), name);
> + } else {
> + vshError(ctl, FALSE, _("Failed to delete pool %s"), name);
> + ret = FALSE;
> + virStoragePoolFree(pool);
> + }
> +
> + return ret;
> +}
just wondering, assuming the Delete operation really destroys on-disk
storage and potentially a large set, shouldn't we add some kind of
interactive confirmation ? Contrary to destroying a domain where state
is preserved on the disk and rather easy to recover and destroying a network
which has very little state, maybe here we need to do something special,
optionally adding a -f flag to bypass confirmation like in rm.
> +
> +/*
> + * "vol-delete" command
> + */
> +static vshCmdInfo info_vol_delete[] = {
> + {"syntax", "vol-delete <vol>"},
> + {"help", gettext_noop("delete a vol")},
> + {"desc", gettext_noop("Delete a given vol.")},
> + {NULL, NULL}
> +};
> +
> +static vshCmdOptDef opts_vol_delete[] = {
> + {"pool", VSH_OT_STRING, 0, gettext_noop("pool name or uuid")},
> + {"vol", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("vol name, key or path")},
> + {NULL, 0, 0, NULL}
> +};
same for a volume.
No surprise in that code, +1
Daniel
--
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard | virtualization library http://libvirt.org/
veillard at redhat.com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
More information about the libvir-list
mailing list