This is a good start, and I agree we need more flexibility here.  More 
feedback inline...

On 06/01/2012 02:39 AM, guyanhua wrote:
>
>    Adding two params (default raise_error = True, extra_param = "")in 
> virsh_cmd function,
>    which can satisfy the basic use and test the virsh command through diff 
> params.
>    Besides, I modified the virsh_hostname function to satisfy more 
> requirements.
>
> Signed-off-by: Gu Yanhua<guyanhua-f...@cn.fujitsu.com>
> ---
>    client/virt/libvirt_vm.py |   19 ++++++++++++-------
>    1 files changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/client/virt/libvirt_vm.py b/client/virt/libvirt_vm.py
> index eda5e8e..2734a6c 100644
> --- a/client/virt/libvirt_vm.py
> +++ b/client/virt/libvirt_vm.py
> @@ -86,7 +86,7 @@ def service_libvirtd_control(action):
>            raise error.TestError("Unknown action: %s" % action)
>
>
> -def virsh_cmd(cmd, uri = ""):
> +def virsh_cmd(cmd, uri = "",raise_error = True, extra_param = ""):

Good, this is maintaining the existing behavior.

>        """
>        Append cmd to 'virsh' and execute, optionally return full results.
>
> @@ -100,10 +100,15 @@ def virsh_cmd(cmd, uri = ""):
>        uri_arg = ""
>        if uri:
>            uri_arg = "-c " + uri
> -    cmd = "%s %s %s" % (VIRSH_EXEC, uri_arg, cmd)
> -    cmd_result = utils.run(cmd, verbose=DEBUG)
> -    return cmd_result.stdout.strip()
> -
> +    cmd = "%s %s %s %s" % (VIRSH_EXEC, uri_arg, cmd, extra_param)

I'm not sure why 'extra_param' would be needed, can't it just all get 
packed into the cmd parameter before calling virsh_cmd()?  I think it's 
valuable to keep low-level functions as simple as possible.  But if you 
have a good reason for needing extra_param, then I'm okay with it.

> +    cmd_result = utils.run(cmd, verbose=DEBUG, raise_error=raise_error)

I think we can just use 'ignore_status = not raise_error' or something 
similar?  I think this would have exact same behavior you desire w/o 
adding any additional params to utils.run.  Or am I missing someting?

> +    logging.info("command:%s", cmd)
> +    logging.debug("stdout: %s", cmd_result.stdout.strip())
> +    logging.debug("exit_status: %s", cmd_result.exit_status)

These additional logging statements look fine to me.  I don't think it 
will be much of a burden, and when things go wrong they will help 
debugging.  We can always remove them later if the output gets to be too 
much.

> +    if raise_error:
> +        return cmd_result.stdout.strip()

Existing virsh_cmd() callers are probably expecting an error.CmdError 
exception to be thrown here.  Maybe a better way is to wrap the 
utils.run() call in a try, then test raise_error inside the except clause?

note: Remember not to use finally clause, not supported in older python :(

> +    else:
> +        return cmd_result.exit_status, cmd_result.stdout.strip()

What do you think about just returning cmd_result here?  Then the caller 
has the flexibility to decide what data is important and it keeps 
virsh_cmd() simple.

>
>    def virsh_uri(uri = ""):
>        """
> @@ -112,11 +117,11 @@ def virsh_uri(uri = ""):
>        return virsh_cmd("uri", uri)
>
>
> -def virsh_hostname(uri = ""):
> +def virsh_hostname(uri = "", raise_error = True, extra_param = ""):
>        """
>        Return the hypervisor hostname.
>        """
> -    return virsh_cmd("hostname", uri)
> +    return virsh_cmd("hostname", uri, raise_error, extra_param)

Assuming you need 'extra_param' here for a test, this is fine.  I think 
for the virsh_cmd() call though, we could just use '"hostname%s" % 
extra_param' or an equivalent, no?  Again, I'm okay with having 
'extra_param' in virsh_cmd() if there's a good reason.

>
>
>    def virsh_version(uri = ""):
> --
> 1.7.1

Otherwise, it looks good to me, thanks!

-- 
Chris Evich, RHCA, RHCE, RHCDS, RHCSS
Quality Assurance Engineer
e-mail: cevich + `@' + redhat.com o: 1-888-RED-HAT1 x44214
_______________________________________________
Autotest mailing list
Autotest@test.kernel.org
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to