[libvirt] [PATCH 3/6] virsh: Add support for completed job stats

John Ferlan jferlan at redhat.com
Fri Sep 5 18:42:30 UTC 2014



On 09/01/2014 11:05 AM, Jiri Denemark wrote:
> New --completed flag for virsh domjobinfo command.
> 
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
>  tools/virsh-domain.c | 27 ++++++++++++++++++++++++---
>  tools/virsh.pod      |  5 +++--
>  2 files changed, 27 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> index c75cd73..1ff264e 100644
> --- a/tools/virsh-domain.c
> +++ b/tools/virsh-domain.c
> @@ -5164,6 +5164,10 @@ static const vshCmdOptDef opts_domjobinfo[] = {
>       .flags = VSH_OFLAG_REQ,
>       .help = N_("domain name, id or uuid")
>      },
> +    {.name = "completed",
> +     .type = VSH_OT_BOOL,
> +     .help = N_("return statistics of a recently completed job")
> +    },
>      {.name = NULL}
>  };
>  
> @@ -5195,14 +5199,18 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
>      virTypedParameterPtr params = NULL;
>      int nparams = 0;
>      unsigned long long value;
> +    unsigned int flags = 0;
>      int rc;
>  
>      if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
>          return false;
>  
> +    if (vshCommandOptBool(cmd, "completed"))
> +        flags |= VIR_DOMAIN_JOB_STATS_COMPLETED;
> +
>      memset(&info, 0, sizeof(info));
>  
> -    rc = virDomainGetJobStats(dom, &info.type, &params, &nparams, 0);
> +    rc = virDomainGetJobStats(dom, &info.type, &params, &nparams, flags);
>      if (rc == 0) {
>          if (virTypedParamsGetULLong(params, nparams,
>                                      VIR_DOMAIN_JOB_TIME_ELAPSED,
> @@ -5239,6 +5247,11 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
>                                      &info.fileRemaining) < 0)
>              goto save_error;
>      } else if (last_error->code == VIR_ERR_NO_SUPPORT) {
> +        if (flags) {
> +            vshError(ctl, "%s", _("Optional flags are not supported by the "
> +                                  "daemon"));
> +            goto cleanup;
> +        }
>          vshDebug(ctl, VSH_ERR_DEBUG, "detailed statistics not supported\n");
>          vshResetLibvirtError();
>          rc = virDomainGetJobInfo(dom, &info);
> @@ -5249,7 +5262,9 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
>      vshPrint(ctl, "%-17s %-12s\n", _("Job type:"),
>               vshDomainJobToString(info.type));
>      if (info.type != VIR_DOMAIN_JOB_BOUNDED &&
> -        info.type != VIR_DOMAIN_JOB_UNBOUNDED) {
> +        info.type != VIR_DOMAIN_JOB_UNBOUNDED &&
> +        (!(flags & VIR_DOMAIN_JOB_STATS_COMPLETED) ||
> +         info.type != VIR_DOMAIN_JOB_COMPLETED)) {
>          ret = true;
>          goto cleanup;
>      }
> @@ -5314,7 +5329,13 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
>                                        &value)) < 0) {
>          goto save_error;
>      } else if (rc) {
> -        vshPrint(ctl, "%-17s %-12llu ms\n", _("Expected downtime:"), value);
> +        if (info.type == VIR_DOMAIN_JOB_COMPLETED) {
> +            vshPrint(ctl, "%-17s %-12llu ms\n",
> +                     _("Total downtime:"), value);
> +        } else {
> +            vshPrint(ctl, "%-17s %-12llu ms\n",
> +                     _("Expected downtime:"), value);
> +        }
>      }
>  
>      if ((rc = virTypedParamsGetULLong(params, nparams,
> diff --git a/tools/virsh.pod b/tools/virsh.pod
> index ea9267e..3c71db9 100644
> --- a/tools/virsh.pod
> +++ b/tools/virsh.pod
> @@ -1112,9 +1112,10 @@ Convert a domain name (or UUID) to a domain id
>  
>  Abort the currently running domain job.
>  
> -=item B<domjobinfo> I<domain>
> +=item B<domjobinfo> I<domain> [I<--completed>]
>  
> -Returns information about jobs running on a domain.
> +Returns information about jobs running on a domain. I<--completed> tells
> +virsh to return information about a recently finished job.

Perhaps a bit more about the "once read" or "libvirtd" restart will
cause statistics to be destroyed.

ACK with that

John
>  
>  =item B<domname> I<domain-id-or-uuid>
>  
> 




More information about the libvir-list mailing list