[libvirt] [Patch 2/3]virsh: Make "DEBUG" loglevel the superset

Eric Blake eblake at redhat.com
Thu Jul 14 13:13:22 UTC 2011


On 07/14/2011 05:58 AM, Jiri Denemark wrote:
> On Thu, Jun 30, 2011 at 13:52:32 +0530, Supriya Kannery wrote:
>> Aligning loglevel values of virsh to that of libvirt. 
>> "DEBUG"=0 loglevel, when specified through commandline or
>> env variable, should log all the messages. "ERROR=4" 
>> should log only error messages. 
>>
>> Signed-off-by: Supriya Kannery <supriyak at in.ibm.com>
>>
> 
> This breaks make check for two reasons. First, it reverses the condition but
> leaves default level unchanged, so instead of not printint anything but errors
> before the patch it now prints all debug messages by default. Second, you
> forgot to change -d5 option passed to virsh in tests/virsh-optparse to -d0;
> the script wants to see all debug messages.
> 
> In other words, the following patch needs to be squashed in.
> 
> Jirka
> 
> diff --git a/tests/virsh-optparse b/tests/virsh-optparse
> index 092e80d..7b3a25d 100755
> --- a/tests/virsh-optparse
> +++ b/tests/virsh-optparse
> @@ -64,7 +64,7 @@ for args in \
>      '--count 2 test' \
>      '--count=2 test' \
>  ; do
> -  virsh -d5 -c $test_url setvcpus $args >out 2>>err || fail=1
> +  virsh -d0 -c $test_url setvcpus $args >out 2>>err || fail=1
>    LC_ALL=C sort out | compare - exp-out || fail=1
>  done
>  test -s err && fail=1
> diff --git a/tools/virsh.c b/tools/virsh.c
> index dda86cb..6d356d2 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -98,6 +98,8 @@ typedef enum {
>      VSH_ERR_ERROR
>  } vshErrorLevel;
>  
> +#define VSH_DEBUG_DEFAULT VSH_ERR_ERROR
> +
>  /*
>   * virsh command line grammar:
>   *
> @@ -13406,15 +13408,17 @@ vshInit(vshControl *ctl)
>      if (ctl->conn)
>          return false;
>  
> -    if (ctl->debug == -1) {
> +    if (ctl->debug == VSH_DEBUG_DEFAULT) {
>          /* log level not set from commandline, check env variable */
>          debugEnv = getenv("VIRSH_DEBUG");
>          if (debugEnv) {
> -            if (virStrToLong_i(debugEnv, NULL, 10, &ctl->debug) < 0 ||
> -                ctl->debug < VSH_ERR_DEBUG || ctl->debug > VSH_ERR_ERROR) {
> +            int debug;
> +            if (virStrToLong_i(debugEnv, NULL, 10, &debug) < 0 ||
> +                debug < VSH_ERR_DEBUG || debug > VSH_ERR_ERROR) {
>                  vshError(ctl, "%s",
>                           _("VIRSH_DEBUG not set with a valid numeric value"));
> -                ctl->debug = VSH_ERR_DEBUG;
> +            } else {
> +                ctl->debug = debug;
>              }
>          }
>      }
> @@ -14102,7 +14106,7 @@ main(int argc, char **argv)
>      memset(ctl, 0, sizeof(vshControl));
>      ctl->imode = true;          /* default is interactive mode */
>      ctl->log_fd = -1;           /* Initialize log file descriptor */
> -    ctl->debug = -1;            /* Initialize log level */
> +    ctl->debug = VSH_DEBUG_DEFAULT;
>  
>      if (!setlocale(LC_ALL, "")) {
>          perror("setlocale");

ACK to that delta, so I've pushed the combined patch.

Aargh! Correction, I pushed the broken patch first, accidentally, so now
I'm pushing the fix separately.  :(

(I hate the lag between my computer and libvirt.org - I keep forgetting
that a 'git push' started in one terminal, followed by 'git rebase
--continue' in another, can affect the operation in the first terminal -
I really wish 'git push' would remember the HEAD that was in effect at
the start of the operation, rather than what is in effect at the time
the remote connection is actually established).

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110714/5569616b/attachment-0001.sig>


More information about the libvir-list mailing list