Patchwork qmp: fix handling of boolean values in qmp-shell

login
register
mail settings
Submitter Igor Mammedov
Date March 25, 2013, 2:48 p.m.
Message ID <1364222926-31757-1-git-send-email-imammedo@redhat.com>
Download mbox | patch
Permalink /patch/230734/
State New
Headers show

Comments

Igor Mammedov - March 25, 2013, 2:48 p.m.
qmp-shell converts only integer arguments and the rest
is assumed to be strings which are faithfully sent as
quoted strings by json. But QEMU refuses to accept qmp
command with boolean argument whose value is escaped
as string.

Fix it by special-casing true/false keywords and store
value as corresponding boolean.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 QMP/qmp-shell |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
Luiz Capitulino - March 25, 2013, 3:16 p.m.
On Mon, 25 Mar 2013 15:48:46 +0100
Igor Mammedov <imammedo@redhat.com> wrote:

> qmp-shell converts only integer arguments and the rest
> is assumed to be strings which are faithfully sent as
> quoted strings by json. But QEMU refuses to accept qmp
> command with boolean argument whose value is escaped
> as string.
> 
> Fix it by special-casing true/false keywords and store
> value as corresponding boolean.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>

Applied to the qmp branch, thanks.

> ---
>  QMP/qmp-shell |    7 ++++++-
>  1 files changed, 6 insertions(+), 1 deletions(-)
> 
> diff --git a/QMP/qmp-shell b/QMP/qmp-shell
> index 24b665c..d126e63 100755
> --- a/QMP/qmp-shell
> +++ b/QMP/qmp-shell
> @@ -101,7 +101,12 @@ class QMPShell(qmp.QEMUMonitorProtocol):
>              try:
>                  value = int(opt[1])
>              except ValueError:
> -                value = opt[1]
> +                if opt[1] == 'true':
> +                    value = True
> +                elif opt[1] == 'false':
> +                    value = False
> +                else:
> +                    value = opt[1]
>              qmpcmd['arguments'][opt[0]] = value
>          return qmpcmd
>

Patch

diff --git a/QMP/qmp-shell b/QMP/qmp-shell
index 24b665c..d126e63 100755
--- a/QMP/qmp-shell
+++ b/QMP/qmp-shell
@@ -101,7 +101,12 @@  class QMPShell(qmp.QEMUMonitorProtocol):
             try:
                 value = int(opt[1])
             except ValueError:
-                value = opt[1]
+                if opt[1] == 'true':
+                    value = True
+                elif opt[1] == 'false':
+                    value = False
+                else:
+                    value = opt[1]
             qmpcmd['arguments'][opt[0]] = value
         return qmpcmd