diff mbox series

[v2] scripts/qmp/qom-set: Allow setting integer value

Message ID 20201002205200.276477-1-jonatan.p@gmail.com
State New
Headers show
Series [v2] scripts/qmp/qom-set: Allow setting integer value | expand

Commit Message

Jonatan Palsson Oct. 2, 2020, 8:52 p.m. UTC
If the value appears to be an integer, parse it as such.

This allows the following:

    qmp/qom-set -s ~/qmp.sock sensor.temperature 20000

.. where sensor is a tmp105 device, and temperature is an integer
property.

Signed-off-by: Jonatan Pålsson <jonatan.p@gmail.com>
---
 scripts/qmp/qom-set | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Philippe Mathieu-Daudé Oct. 3, 2020, 5:33 p.m. UTC | #1
Hi Jonatan,

On 10/2/20 10:52 PM, Jonatan Pålsson wrote:
> If the value appears to be an integer, parse it as such.

> 

> This allows the following:

> 

>     qmp/qom-set -s ~/qmp.sock sensor.temperature 20000


Maybe instead:

Fix the following error:

  $ scripts/qmp/qom-set -s ~/qmp.sock sensor.temperature 20000
  Traceback (most recent call last):
    File "scripts/qmp/qom-set", line 66, in <module>
      print(srv.command('qom-set', path=path, property=prop, value=value))
    File "scripts/qmp/../../python/qemu/qmp.py", line 274, in command
      raise QMPResponseError(ret)
  qemu.qmp.QMPResponseError: Invalid parameter type for 'temperature',
expected: integer

> 

> .. where sensor is a tmp105 device, and temperature is an integer

> property.

> 

> Signed-off-by: Jonatan Pålsson <jonatan.p@gmail.com>

> ---

>  scripts/qmp/qom-set | 5 ++++-

>  1 file changed, 4 insertions(+), 1 deletion(-)

> 

> diff --git a/scripts/qmp/qom-set b/scripts/qmp/qom-set

> index 240a78187f..49eebe4924 100755

> --- a/scripts/qmp/qom-set

> +++ b/scripts/qmp/qom-set

> @@ -56,7 +56,10 @@ if len(args) > 1:

>          path, prop = args[0].rsplit('.', 1)

>      except:

>          usage_error("invalid format for path/property/value")

> -    value = args[1]

> +    try:

> +        value = int(args[1])


Maybe 'long' is safer?

> +    except ValueError:

> +        value = args[1]

>  else:

>      usage_error("not enough arguments")

>  

>
John Snow Oct. 3, 2020, 11:55 p.m. UTC | #2
On 10/3/20 1:33 PM, Philippe Mathieu-Daudé wrote:
> Hi Jonatan,

> 

> On 10/2/20 10:52 PM, Jonatan Pålsson wrote:

>> If the value appears to be an integer, parse it as such.

>>

>> This allows the following:

>>

>>      qmp/qom-set -s ~/qmp.sock sensor.temperature 20000

> 

> Maybe instead:

> 

> Fix the following error:

> 

>    $ scripts/qmp/qom-set -s ~/qmp.sock sensor.temperature 20000

>    Traceback (most recent call last):

>      File "scripts/qmp/qom-set", line 66, in <module>

>        print(srv.command('qom-set', path=path, property=prop, value=value))

>      File "scripts/qmp/../../python/qemu/qmp.py", line 274, in command

>        raise QMPResponseError(ret)

>    qemu.qmp.QMPResponseError: Invalid parameter type for 'temperature',

> expected: integer

> 


No, this is just relaying the error that QMP returned. QMP is telling 
you it doesn't want string data for this parameter. His diagnosis of the 
problem is accurate.

>>

>> .. where sensor is a tmp105 device, and temperature is an integer

>> property.

>>

>> Signed-off-by: Jonatan Pålsson <jonatan.p@gmail.com>

>> ---

>>   scripts/qmp/qom-set | 5 ++++-

>>   1 file changed, 4 insertions(+), 1 deletion(-)

>>

>> diff --git a/scripts/qmp/qom-set b/scripts/qmp/qom-set

>> index 240a78187f..49eebe4924 100755

>> --- a/scripts/qmp/qom-set

>> +++ b/scripts/qmp/qom-set

>> @@ -56,7 +56,10 @@ if len(args) > 1:

>>           path, prop = args[0].rsplit('.', 1)

>>       except:

>>           usage_error("invalid format for path/property/value")

>> -    value = args[1]

>> +    try:

>> +        value = int(args[1])

> 

> Maybe 'long' is safer?

> 


This is a Python patch, what's a "long"?

>> +    except ValueError:

>> +        value = args[1]

>>   else:

>>       usage_error("not enough arguments")

>>   

>>

>
Philippe Mathieu-Daudé Oct. 4, 2020, 9:46 a.m. UTC | #3
On 10/4/20 1:55 AM, John Snow wrote:
> On 10/3/20 1:33 PM, Philippe Mathieu-Daudé wrote:

>> Hi Jonatan,

>>

>> On 10/2/20 10:52 PM, Jonatan Pålsson wrote:

>>> If the value appears to be an integer, parse it as such.

>>>

>>> This allows the following:

>>>

>>>      qmp/qom-set -s ~/qmp.sock sensor.temperature 20000

>>

>> Maybe instead:

>>

>> Fix the following error:

>>

>>    $ scripts/qmp/qom-set -s ~/qmp.sock sensor.temperature 20000

>>    Traceback (most recent call last):

>>      File "scripts/qmp/qom-set", line 66, in <module>

>>        print(srv.command('qom-set', path=path, property=prop,

>> value=value))

>>      File "scripts/qmp/../../python/qemu/qmp.py", line 274, in command

>>        raise QMPResponseError(ret)

>>    qemu.qmp.QMPResponseError: Invalid parameter type for 'temperature',

>> expected: integer

>>

> 

> No, this is just relaying the error that QMP returned. QMP is telling

> you it doesn't want string data for this parameter. His diagnosis of the

> problem is accurate.


OK.

> 

>>>

>>> .. where sensor is a tmp105 device, and temperature is an integer

>>> property.

>>>

>>> Signed-off-by: Jonatan Pålsson <jonatan.p@gmail.com>

>>> ---

>>>   scripts/qmp/qom-set | 5 ++++-

>>>   1 file changed, 4 insertions(+), 1 deletion(-)

>>>

>>> diff --git a/scripts/qmp/qom-set b/scripts/qmp/qom-set

>>> index 240a78187f..49eebe4924 100755

>>> --- a/scripts/qmp/qom-set

>>> +++ b/scripts/qmp/qom-set

>>> @@ -56,7 +56,10 @@ if len(args) > 1:

>>>           path, prop = args[0].rsplit('.', 1)

>>>       except:

>>>           usage_error("invalid format for path/property/value")

>>> -    value = args[1]

>>> +    try:

>>> +        value = int(args[1])

>>

>> Maybe 'long' is safer?

>>

> 

> This is a Python patch, what's a "long"?


I haven't finished the mental 2 -> 3 switch yet :/

> 

>>> +    except ValueError:

>>> +        value = args[1]

>>>   else:

>>>       usage_error("not enough arguments")

>>>  

>>

>
diff mbox series

Patch

diff --git a/scripts/qmp/qom-set b/scripts/qmp/qom-set
index 240a78187f..49eebe4924 100755
--- a/scripts/qmp/qom-set
+++ b/scripts/qmp/qom-set
@@ -56,7 +56,10 @@  if len(args) > 1:
         path, prop = args[0].rsplit('.', 1)
     except:
         usage_error("invalid format for path/property/value")
-    value = args[1]
+    try:
+        value = int(args[1])
+    except ValueError:
+        value = args[1]
 else:
     usage_error("not enough arguments")