[libvirt] [PATCH 05/13] virsh: Implement vshTable API to snapshot-list.

Michal Privoznik mprivozn at redhat.com
Wed Sep 19 09:26:25 UTC 2018


On 09/18/2018 04:21 PM, Simon Kobyda wrote:
> Signed-off-by: Simon Kobyda <skobyda at redhat.com>
> ---
>  tools/virsh-snapshot.c | 33 ++++++++++++++++++++-------------
>  1 file changed, 20 insertions(+), 13 deletions(-)
> 
> diff --git a/tools/virsh-snapshot.c b/tools/virsh-snapshot.c
> index a4ea959230..5a02d2c786 100644
> --- a/tools/virsh-snapshot.c
> +++ b/tools/virsh-snapshot.c
> @@ -41,6 +41,7 @@
>  #include "virstring.h"
>  #include "virxml.h"
>  #include "conf/snapshot_conf.h"
> +#include "vsh-table.h"
>  
>  /* Helper for snapshot-create and snapshot-create-as */
>  static bool
> @@ -1487,6 +1488,7 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
>      char *parent_snap = NULL;
>      virDomainSnapshotPtr start = NULL;
>      virshSnapshotListPtr snaplist = NULL;
> +    vshTablePtr table = NULL;
>  
>      VSH_EXCLUSIVE_OPTIONS_VAR(tree, name);
>      VSH_EXCLUSIVE_OPTIONS_VAR(parent, roots);
> @@ -1547,15 +1549,12 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
>  
>      if (!tree && !name) {
>          if (parent)
> -            vshPrintExtra(ctl, " %-20s %-25s %-15s %s",
> -                          _("Name"), _("Creation Time"), _("State"),
> -                          _("Parent"));
> +            table = vshTableNew("Name", "Creation Time", "State", "Parent", NULL);
>          else
> -            vshPrintExtra(ctl, " %-20s %-25s %s",
> -                          _("Name"), _("Creation Time"), _("State"));
> -        vshPrintExtra(ctl, "\n"
> -                           "------------------------------"
> -                           "------------------------------\n");
> +            table = vshTableNew("Name", "Creation Time", "State", NULL);
> +
> +        if (!table)
> +            goto cleanup;
>      }
>  
>      if (tree) {
> @@ -1614,13 +1613,20 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
>          strftime(timestr, sizeof(timestr), "%Y-%m-%d %H:%M:%S %z",
>                   &time_info);
>  
> -        if (parent)
> -            vshPrint(ctl, " %-20s %-25s %-15s %s\n",
> -                     snap_name, timestr, state, parent_snap);
> -        else
> -            vshPrint(ctl, " %-20s %-25s %s\n", snap_name, timestr, state);
> +        if (parent) {
> +            if (vshTableRowAppend(table, snap_name, timestr, state, parent_snap,
> +                                  NULL) < 0)
> +                continue;
> +        } else {
> +            if (vshTableRowAppend(table, snap_name, timestr, state,
> +                                  NULL) < 0)
> +                continue;

What is the point of these 'continue'? Shouldn't we jump to cleanup instead?

> +        }
>      }
>  
> +    if (!tree && !name)

Or simply: if (table)

> +        vshTablePrintToStdout(table, ctl);
> +
>      ret = true;
>  
>   cleanup:
> @@ -1633,6 +1639,7 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
>      xmlFreeDoc(xml);
>      VIR_FREE(doc);
>      virshDomainFree(dom);
> +    vshTableFree(table);
>  
>      return ret;
>  }
> 

This is where I'm going to stop my review. You get the idea what changes
you need to do for v2.

Michal




More information about the libvir-list mailing list