* [Qemu-devel] [PATCH v2 0/2] qom: add test tools (resend from "qom: dynamic properties")
@ 2012-02-20 22:28 Michael Roth
2012-02-20 22:28 ` [Qemu-devel] [PATCH 1/2] qmp: make qmp.py easier to use Michael Roth
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Michael Roth @ 2012-02-20 22:28 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
CHANGES SINCE V2:
- this one actually works :) QMP_SOCKET env variable wasn't being handled properly in
the last version.
AFAICT the qom tool got dropped from Anthony's "qom: dynamic properties
and composition tree" series due to some hardcoded paths for the QMP socket.
I've since ended up adding support for user-specified paths to get them working
in my environment so I figured I'd resend to the list since I've seen others
express interest.
Only functional change for existing users would be the need to set your
QMP_SOCKET env variable to the previous default (/tmp/server.sock):
mdroth@illuin:~$ qom-set -h
environment variables:
QMP_SOCKET=<path | addr:port>
usage:
/home/mdroth/bin/qom-set [-h] [-s <QMP socket path | addr:port>] <path>.<property> <value>
mdroth@illuin:~$ qom-get -h
environment variables:
QMP_SOCKET=<path | addr:port>
usage:
/home/mdroth/bin/qom-get [-h] [-s <QMP socket path | addr:port>] <path>.<property>
mdroth@illuin:~$ qom-list -h
environment variables:
QMP_SOCKET=<path | addr:port>
usage:
/home/mdroth/bin/qom-list [-h] [-s <QMP socket path | addr:port>] [<path>]
mdroth@illuin:~$
^ permalink raw reply [flat|nested] 5+ messages in thread* [Qemu-devel] [PATCH 1/2] qmp: make qmp.py easier to use 2012-02-20 22:28 [Qemu-devel] [PATCH v2 0/2] qom: add test tools (resend from "qom: dynamic properties") Michael Roth @ 2012-02-20 22:28 ` Michael Roth 2012-02-20 22:28 ` [Qemu-devel] [PATCH 2/2] qom: add test tools Michael Roth 2012-02-22 18:54 ` [Qemu-devel] [PATCH v2 0/2] qom: add test tools (resend from "qom: dynamic properties") Anthony Liguori 2 siblings, 0 replies; 5+ messages in thread From: Michael Roth @ 2012-02-20 22:28 UTC (permalink / raw) To: qemu-devel; +Cc: aliguori From: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> --- QMP/qmp.py | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/QMP/qmp.py b/QMP/qmp.py index c7dbea0..36ecc1d 100644 --- a/QMP/qmp.py +++ b/QMP/qmp.py @@ -128,6 +128,12 @@ class QEMUMonitorProtocol: qmp_cmd['id'] = id return self.cmd_obj(qmp_cmd) + def command(self, cmd, **kwds): + ret = self.cmd(cmd, kwds) + if ret.has_key('error'): + raise Exception(ret['error']['desc']) + return ret['return'] + def get_events(self, wait=False): """ Get a list of available QMP events. -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 2/2] qom: add test tools 2012-02-20 22:28 [Qemu-devel] [PATCH v2 0/2] qom: add test tools (resend from "qom: dynamic properties") Michael Roth 2012-02-20 22:28 ` [Qemu-devel] [PATCH 1/2] qmp: make qmp.py easier to use Michael Roth @ 2012-02-20 22:28 ` Michael Roth 2012-02-22 1:03 ` Andreas Färber 2012-02-22 18:54 ` [Qemu-devel] [PATCH v2 0/2] qom: add test tools (resend from "qom: dynamic properties") Anthony Liguori 2 siblings, 1 reply; 5+ messages in thread From: Michael Roth @ 2012-02-20 22:28 UTC (permalink / raw) To: qemu-devel; +Cc: aliguori From: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> --- QMP/qom-get | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ QMP/qom-list | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ QMP/qom-set | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 195 insertions(+), 0 deletions(-) create mode 100755 QMP/qom-get create mode 100755 QMP/qom-list create mode 100755 QMP/qom-set diff --git a/QMP/qom-get b/QMP/qom-get new file mode 100755 index 0000000..0172c69 --- /dev/null +++ b/QMP/qom-get @@ -0,0 +1,67 @@ +#!/usr/bin/python +## +# QEMU Object Model test tools +# +# Copyright IBM, Corp. 2011 +# +# Authors: +# Anthony Liguori <aliguori@us.ibm.com> +# +# This work is licensed under the terms of the GNU GPL, version 2 or later. See +# the COPYING file in the top-level directory. +## + +import sys +import os +from qmp import QEMUMonitorProtocol + +cmd, args = sys.argv[0], sys.argv[1:] +socket_path = None +path = None +prop = None + +def usage(): + return '''environment variables: + QMP_SOCKET=<path | addr:port> +usage: + %s [-h] [-s <QMP socket path | addr:port>] <path>.<property> +''' % cmd + +def usage_error(error_msg = "unspecified error"): + sys.stderr.write('%s\nERROR: %s\n' % (usage(), error_msg)) + exit(1) + +if len(args) > 0: + if args[0] == "-h": + print usage() + exit(0); + elif args[0] == "-s": + try: + socket_path = args[1] + except: + usage_error("missing argument: QMP socket path or address"); + args = args[2:] + +if not socket_path: + if os.environ.has_key('QMP_SOCKET'): + socket_path = os.environ['QMP_SOCKET'] + else: + usage_error("no QMP socket path or address given"); + +if len(args) > 0: + try: + path, prop = args[0].rsplit('.', 1) + except: + usage_error("invalid format for path/property/value") +else: + usage_error("not enough arguments") + +srv = QEMUMonitorProtocol(socket_path) +srv.connect() + +rsp = srv.command('qom-get', path=path, property=prop) +if type(rsp) == dict: + for i in rsp.keys(): + print '%s: %s' % (i, rsp[i]) +else: + print rsp diff --git a/QMP/qom-list b/QMP/qom-list new file mode 100755 index 0000000..1e7cc6c --- /dev/null +++ b/QMP/qom-list @@ -0,0 +1,64 @@ +#!/usr/bin/python +## +# QEMU Object Model test tools +# +# Copyright IBM, Corp. 2011 +# +# Authors: +# Anthony Liguori <aliguori@us.ibm.com> +# +# This work is licensed under the terms of the GNU GPL, version 2 or later. See +# the COPYING file in the top-level directory. +## + +import sys +import os +from qmp import QEMUMonitorProtocol + +cmd, args = sys.argv[0], sys.argv[1:] +socket_path = None +path = None +prop = None + +def usage(): + return '''environment variables: + QMP_SOCKET=<path | addr:port> +usage: + %s [-h] [-s <QMP socket path | addr:port>] [<path>] +''' % cmd + +def usage_error(error_msg = "unspecified error"): + sys.stderr.write('%s\nERROR: %s\n' % (usage(), error_msg)) + exit(1) + +if len(args) > 0: + if args[0] == "-h": + print usage() + exit(0); + elif args[0] == "-s": + try: + socket_path = args[1] + except: + usage_error("missing argument: QMP socket path or address"); + args = args[2:] + +if not socket_path: + if os.environ.has_key('QMP_SOCKET'): + socket_path = os.environ['QMP_SOCKET'] + else: + usage_error("no QMP socket path or address given"); + +srv = QEMUMonitorProtocol(socket_path) +srv.connect() + +if len(args) == 0: + print '/' + sys.exit(0) + +for item in srv.command('qom-list', path=args[0]): + if item['type'].startswith('child<'): + print '%s/' % item['name'] + elif item['type'].startswith('link<'): + print '@%s/' % item['name'] + else: + print '%s' % item['name'] diff --git a/QMP/qom-set b/QMP/qom-set new file mode 100755 index 0000000..54ecfec --- /dev/null +++ b/QMP/qom-set @@ -0,0 +1,64 @@ +#!/usr/bin/python +## +# QEMU Object Model test tools +# +# Copyright IBM, Corp. 2011 +# +# Authors: +# Anthony Liguori <aliguori@us.ibm.com> +# +# This work is licensed under the terms of the GNU GPL, version 2 or later. See +# the COPYING file in the top-level directory. +## + +import sys +import os +from qmp import QEMUMonitorProtocol + +cmd, args = sys.argv[0], sys.argv[1:] +socket_path = None +path = None +prop = None +value = None + +def usage(): + return '''environment variables: + QMP_SOCKET=<path | addr:port> +usage: + %s [-h] [-s <QMP socket path | addr:port>] <path>.<property> <value> +''' % cmd + +def usage_error(error_msg = "unspecified error"): + sys.stderr.write('%s\nERROR: %s\n' % (usage(), error_msg)) + exit(1) + +if len(args) > 0: + if args[0] == "-h": + print usage() + exit(0); + elif args[0] == "-s": + try: + socket_path = args[1] + except: + usage_error("missing argument: QMP socket path or address"); + args = args[2:] + +if not socket_path: + if os.environ.has_key('QMP_SOCKET'): + socket_path = os.environ['QMP_SOCKET'] + else: + usage_error("no QMP socket path or address given"); + +if len(args) > 1: + try: + path, prop = args[0].rsplit('.', 1) + except: + usage_error("invalid format for path/property/value") + value = args[1] +else: + usage_error("not enough arguments") + +srv = QEMUMonitorProtocol(socket_path) +srv.connect() + +print srv.command('qom-set', path=path, property=prop, value=sys.argv[2]) -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] qom: add test tools 2012-02-20 22:28 ` [Qemu-devel] [PATCH 2/2] qom: add test tools Michael Roth @ 2012-02-22 1:03 ` Andreas Färber 0 siblings, 0 replies; 5+ messages in thread From: Andreas Färber @ 2012-02-22 1:03 UTC (permalink / raw) To: Michael Roth; +Cc: Paolo Bonzini, aliguori, qemu-devel Am 20.02.2012 23:28, schrieb Michael Roth: > From: Anthony Liguori <aliguori@us.ibm.com> > > Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> > Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> Tested-by: Andreas Färber <afaerber@suse.de> Thanks, these are really handy! :-) Since it's three independent scripts, it might make sense to split this into three commits? Andreas > --- > QMP/qom-get | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > QMP/qom-list | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > QMP/qom-set | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 195 insertions(+), 0 deletions(-) > create mode 100755 QMP/qom-get > create mode 100755 QMP/qom-list > create mode 100755 QMP/qom-set -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/2] qom: add test tools (resend from "qom: dynamic properties") 2012-02-20 22:28 [Qemu-devel] [PATCH v2 0/2] qom: add test tools (resend from "qom: dynamic properties") Michael Roth 2012-02-20 22:28 ` [Qemu-devel] [PATCH 1/2] qmp: make qmp.py easier to use Michael Roth 2012-02-20 22:28 ` [Qemu-devel] [PATCH 2/2] qom: add test tools Michael Roth @ 2012-02-22 18:54 ` Anthony Liguori 2 siblings, 0 replies; 5+ messages in thread From: Anthony Liguori @ 2012-02-22 18:54 UTC (permalink / raw) To: Michael Roth; +Cc: qemu-devel On 02/20/2012 04:28 PM, Michael Roth wrote: > CHANGES SINCE V2: > - this one actually works :) QMP_SOCKET env variable wasn't being handled properly in > the last version. > > AFAICT the qom tool got dropped from Anthony's "qom: dynamic properties > and composition tree" series due to some hardcoded paths for the QMP socket. > > I've since ended up adding support for user-specified paths to get them working > in my environment so I figured I'd resend to the list since I've seen others > express interest. > > Only functional change for existing users would be the need to set your > QMP_SOCKET env variable to the previous default (/tmp/server.sock): Applied. Thanks. Regards, Anthony Liguori > > mdroth@illuin:~$ qom-set -h > environment variables: > QMP_SOCKET=<path | addr:port> > usage: > /home/mdroth/bin/qom-set [-h] [-s<QMP socket path | addr:port>]<path>.<property> <value> > > mdroth@illuin:~$ qom-get -h > environment variables: > QMP_SOCKET=<path | addr:port> > usage: > /home/mdroth/bin/qom-get [-h] [-s<QMP socket path | addr:port>]<path>.<property> > > mdroth@illuin:~$ qom-list -h > environment variables: > QMP_SOCKET=<path | addr:port> > usage: > /home/mdroth/bin/qom-list [-h] [-s<QMP socket path | addr:port>] [<path>] > > mdroth@illuin:~$ > > > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-02-22 18:54 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-02-20 22:28 [Qemu-devel] [PATCH v2 0/2] qom: add test tools (resend from "qom: dynamic properties") Michael Roth 2012-02-20 22:28 ` [Qemu-devel] [PATCH 1/2] qmp: make qmp.py easier to use Michael Roth 2012-02-20 22:28 ` [Qemu-devel] [PATCH 2/2] qom: add test tools Michael Roth 2012-02-22 1:03 ` Andreas Färber 2012-02-22 18:54 ` [Qemu-devel] [PATCH v2 0/2] qom: add test tools (resend from "qom: dynamic properties") Anthony Liguori
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.