Message ID | 20201002205200.276477-1-jonatan.p@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v2] scripts/qmp/qom-set: Allow setting integer value | expand |
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") > >
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") >> >> >
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 --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")
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(-)