diff mbox

scripts/qmp/qom-set: fix the value argument passed to srv.command()

Message ID 149373610338.5144.9635049015143453288.stgit@bahia.lan
State New
Headers show

Commit Message

Greg Kurz May 2, 2017, 2:41 p.m. UTC
When invoking the script with -s, we end up passing a bogus value
to QEMU:

$ ./scripts/qmp/qom-set -s /var/tmp/qmp-sock-exp /machine.accel kvm
{}
$ ./scripts/qmp/qom-get -s /var/tmp/qmp-sock-exp /machine.accel
/var/tmp/qmp-sock-exp

This happens because sys.argv[2] isn't necessarily the command line
argument that holds the value. It is sys.argv[4] when -s was also
passed.

Actually, the code already has a variable to handle that. This patch
simply uses it.

Signed-off-by: Greg Kurz <groug@kaod.org>
---
 scripts/qmp/qom-set |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Philippe Mathieu-Daudé May 2, 2017, 7:46 p.m. UTC | #1
On 05/02/2017 11:41 AM, Greg Kurz wrote:
> When invoking the script with -s, we end up passing a bogus value
> to QEMU:
>
> $ ./scripts/qmp/qom-set -s /var/tmp/qmp-sock-exp /machine.accel kvm
> {}
> $ ./scripts/qmp/qom-get -s /var/tmp/qmp-sock-exp /machine.accel
> /var/tmp/qmp-sock-exp
>
> This happens because sys.argv[2] isn't necessarily the command line
> argument that holds the value. It is sys.argv[4] when -s was also
> passed.
>
> Actually, the code already has a variable to handle that. This patch
> simply uses it.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  scripts/qmp/qom-set |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/qmp/qom-set b/scripts/qmp/qom-set
> index 54ecfecc531e..94e27789224c 100755
> --- a/scripts/qmp/qom-set
> +++ b/scripts/qmp/qom-set
> @@ -61,4 +61,4 @@ else:
>  srv = QEMUMonitorProtocol(socket_path)
>  srv.connect()
>
> -print srv.command('qom-set', path=path, property=prop, value=sys.argv[2])
> +print srv.command('qom-set', path=path, property=prop, value=value)
>
>
Markus Armbruster May 10, 2017, 3:51 p.m. UTC | #2
Greg Kurz <groug@kaod.org> writes:

> When invoking the script with -s, we end up passing a bogus value
> to QEMU:
>
> $ ./scripts/qmp/qom-set -s /var/tmp/qmp-sock-exp /machine.accel kvm
> {}
> $ ./scripts/qmp/qom-get -s /var/tmp/qmp-sock-exp /machine.accel
> /var/tmp/qmp-sock-exp
>
> This happens because sys.argv[2] isn't necessarily the command line
> argument that holds the value. It is sys.argv[4] when -s was also
> passed.
>
> Actually, the code already has a variable to handle that. This patch
> simply uses it.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
>  scripts/qmp/qom-set |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/qmp/qom-set b/scripts/qmp/qom-set
> index 54ecfecc531e..94e27789224c 100755
> --- a/scripts/qmp/qom-set
> +++ b/scripts/qmp/qom-set
> @@ -61,4 +61,4 @@ else:
>  srv = QEMUMonitorProtocol(socket_path)
>  srv.connect()
>  
> -print srv.command('qom-set', path=path, property=prop, value=sys.argv[2])
> +print srv.command('qom-set', path=path, property=prop, value=value)

Given Python modules like argparse, doing option parsing by hand is
basically stupid.  This patch fixes it without making it any stupider.
Sold.

Reviewed-by: Markus Armbruster <armbru@redhat.com>
Markus Armbruster May 16, 2017, 11:21 a.m. UTC | #3
Greg Kurz <groug@kaod.org> writes:

> When invoking the script with -s, we end up passing a bogus value
> to QEMU:
>
> $ ./scripts/qmp/qom-set -s /var/tmp/qmp-sock-exp /machine.accel kvm
> {}
> $ ./scripts/qmp/qom-get -s /var/tmp/qmp-sock-exp /machine.accel
> /var/tmp/qmp-sock-exp
>
> This happens because sys.argv[2] isn't necessarily the command line
> argument that holds the value. It is sys.argv[4] when -s was also
> passed.
>
> Actually, the code already has a variable to handle that. This patch
> simply uses it.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>

Applied to qapi-next, thanks!
diff mbox

Patch

diff --git a/scripts/qmp/qom-set b/scripts/qmp/qom-set
index 54ecfecc531e..94e27789224c 100755
--- a/scripts/qmp/qom-set
+++ b/scripts/qmp/qom-set
@@ -61,4 +61,4 @@  else:
 srv = QEMUMonitorProtocol(socket_path)
 srv.connect()
 
-print srv.command('qom-set', path=path, property=prop, value=sys.argv[2])
+print srv.command('qom-set', path=path, property=prop, value=value)