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

Re: [libvirt] [PATCH] Adds the missing vol-pool command to virsh.



On 06/08/2010 06:03 AM, Justin Clift wrote:
> Hi all,

Much better - git am liked this patch.  And a tip for your matching your
commit message style to other commits: list a category first, use all
lower-case, and end without a period.  While not essential, doing these
things will make 'git log --oneline' produce more readable output.

> 
> This patch adds a "vol-pool" command to virsh, to round out the conversion functions for vols in virsh.
> 
> At the moment, if we start with a volume name and a pool id, we're all good.  We can convert from that pair to either a volume key or volume path.

Also, wrap commit messages, like you would email (72 or 80 columns is
typical).

> 
> But, if we're given just a volume key or path we have no good way to look up the storage pool for it.  Kind of makes it a one way association. :/
> 
> This patch fixes that, making it possible to work from just having a volume key or path. :)
> 
> Regards and best wishes,
> 
> Justin Clift
> 
> ---
>  tools/virsh.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 48 insertions(+), 0 deletions(-)

No change to tools/virsh.pod?  I know you have other cleanup patches to
virsh.pod, but for a new feature, I'd rather get in the habit of
checking in the doc change at the same time as the new feature.

> 
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 1279f41..95aea0f 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -5975,6 +5975,53 @@ cmdVolName(vshControl *ctl, const vshCmd *cmd)
>  }
>  
>  
> +/*
> + * "vol-pool" command
> + */
> +static const vshCmdInfo info_vol_pool[] = {
> +    {"help", N_("returns the storage pool for a given volume key or path")},
> +    {"desc", ""},
> +    {NULL, NULL}
> +};
> +
> +static const vshCmdOptDef opts_vol_pool[] = {
> +    {"vol", VSH_OT_DATA, VSH_OFLAG_REQ, N_("volume key or path")},
> +    {NULL, 0, 0, NULL}
> +};
> +
> +static int
> +cmdVolPool(vshControl *ctl, const vshCmd *cmd)
> +{
> +    virStoragePoolPtr pool;
> +    virStorageVolPtr vol;
> +
> +    // Check the connection to libvirtd daemon is still working

The rest of this file used /* */ comments.  It's nice to be consistent
(even though we require C99 for various other reasons, we're still stuck
on some C89 syntax constructs for style reasons).

> +    if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
> +        return FALSE;
> +
> +    // Use the supplied string to locate the volume
> +    if (!(vol = vshCommandOptVolBy(ctl, cmd, "vol", "pool", NULL,
> +                                   VSH_BYUUID))) {
> +        return FALSE;
> +    }
> +
> +    // Look up the parent storage pool for the volume
> +    pool = virStoragePoolLookupByVolume(vol);
> +    if (pool == NULL) {
> +        vshError(ctl, "%s", _("failed to get parent pool"));
> +        virStorageVolFree(vol);
> +        return FALSE;
> +    }
> +
> +    // Return the name of the parent storage pool
> +    vshPrint(ctl, "%s\n", virStoragePoolGetName(pool));
> +
> +    // Cleanup
> +    virStorageVolFree(vol);
> +    virStoragePoolFree(pool);
> +    return TRUE;
> +}
> +
>  
>  /*
>   * "vol-key" command
> @@ -8837,6 +8884,7 @@ static const vshCmdDef commands[] = {
>      {"vol-dumpxml", cmdVolDumpXML, opts_vol_dumpxml, info_vol_dumpxml},
>      {"vol-info", cmdVolInfo, opts_vol_info, info_vol_info},
>      {"vol-list", cmdVolList, opts_vol_list, info_vol_list},
> +    {"vol-pool", cmdVolPool, opts_vol_pool, info_vol_pool},
>      {"vol-path", cmdVolPath, opts_vol_path, info_vol_path},
>      {"vol-name", cmdVolName, opts_vol_name, info_vol_name},
>      {"vol-key", cmdVolKey, opts_vol_key, info_vol_key},

In general, this looks okay to me, but I'll wait for the next round
addressing the nits I raised before pushing anything.

-- 
Eric Blake   eblake redhat com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


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