qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-2.11 v2 4/5] qmp-shell: Accept QMP command a


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH for-2.11 v2 4/5] qmp-shell: Accept QMP command as argument
Date: Tue, 15 Aug 2017 12:03:53 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Eduardo Habkost <address@hidden> writes:

Suggest to insert here:

  If additional arguments QMP-COMMAND ARG=VAL... are given, run just
  that QMP command instead of the REPL.

Question: is this limited to simple arguments?  If no, how would I write
an object argument?  For instance, how would I do

    { "execute": "blockdev-add", "arguments": { "node-name": "foo", "driver": 
"nbd", "server": { "type": "inet", "host": "localhost", "port": "12345" } } }

?

> This is useful for testing QMP commands in scripts.
>
> Example usage, combined with 'jq' for filtering the results:
>
>   $ ./scripts/qmp/qmp-shell /tmp/qmp qom-list path=/ | jq -r .return[].name
>   machine
>   type
>   chardevs
>   backend

What's jq?

>   $

Let's drop this line.

>
> Signed-off-by: Eduardo Habkost <address@hidden>
> ---
> Changes v1 -> v2:
> * Rewritten using optparse module
> ---
>  scripts/qmp/qmp-shell | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
> index 4b9a420..4b7374e 100755
> --- a/scripts/qmp/qmp-shell
> +++ b/scripts/qmp/qmp-shell
> @@ -400,7 +400,7 @@ def die(msg):
>  
>  def main():
>      parser = optparse.OptionParser(description='QMP shell utility')
> -    parser.set_usage("%prog [options] <UNIX socket path> | <TCP 
> address:port>")
> +    parser.set_usage("%prog [options] <UNIX socket path> | <TCP 
> address:port> [COMMAND [ARG=VALUE]...]")
>      parser.add_option('-v', action='store_true', dest='verbose',
>          help='Verbose (echo command sent and received)')
>      parser.add_option('-p', action='store_true', dest='pretty',
> @@ -411,10 +411,11 @@ def main():
>          default=True, help='Skip negotiate (for qemu-ga)')
>      opts,args = parser.parse_args()
>  
> -    if len(args) != 1:
> +    if len(args) < 1:
>          parser.print_help(sys.stderr)
>          sys.exit(1)
>      addr = args[0]
> +    cmdargs = args[1:]
>  
>      try:
>          if opts.hmp:
> @@ -433,10 +434,13 @@ def main():
>      except qemu.error:
>          die('Could not connect to %s' % addr)
>  
> -    qemu.show_banner()
>      qemu.set_verbosity(opts.verbose)
> -    while qemu.read_exec_command(qemu.get_prompt()):
> -        pass
> +    if len(cmdargs):

Superfluous len().

> +        qemu.execute_cmdargs(cmdargs)
> +    else:
> +        qemu.show_banner()
> +        while qemu.read_exec_command(qemu.get_prompt()):
> +            pass
>      qemu.close()
>  
>  if __name__ == '__main__':



reply via email to

[Prev in Thread] Current Thread [Next in Thread]