1*22f3946bSLuiz Capitulino#!/usr/bin/python 2*22f3946bSLuiz Capitulino## 3*22f3946bSLuiz Capitulino# QEMU Object Model test tools 4*22f3946bSLuiz Capitulino# 5*22f3946bSLuiz Capitulino# Copyright IBM, Corp. 2011 6*22f3946bSLuiz Capitulino# 7*22f3946bSLuiz Capitulino# Authors: 8*22f3946bSLuiz Capitulino# Anthony Liguori <aliguori@us.ibm.com> 9*22f3946bSLuiz Capitulino# 10*22f3946bSLuiz Capitulino# This work is licensed under the terms of the GNU GPL, version 2 or later. See 11*22f3946bSLuiz Capitulino# the COPYING file in the top-level directory. 12*22f3946bSLuiz Capitulino## 13*22f3946bSLuiz Capitulino 14*22f3946bSLuiz Capitulinoimport sys 15*22f3946bSLuiz Capitulinoimport os 16*22f3946bSLuiz Capitulinofrom qmp import QEMUMonitorProtocol 17*22f3946bSLuiz Capitulino 18*22f3946bSLuiz Capitulinocmd, args = sys.argv[0], sys.argv[1:] 19*22f3946bSLuiz Capitulinosocket_path = None 20*22f3946bSLuiz Capitulinopath = None 21*22f3946bSLuiz Capitulinoprop = None 22*22f3946bSLuiz Capitulino 23*22f3946bSLuiz Capitulinodef usage(): 24*22f3946bSLuiz Capitulino return '''environment variables: 25*22f3946bSLuiz Capitulino QMP_SOCKET=<path | addr:port> 26*22f3946bSLuiz Capitulinousage: 27*22f3946bSLuiz Capitulino %s [-h] [-s <QMP socket path | addr:port>] [<path>] 28*22f3946bSLuiz Capitulino''' % cmd 29*22f3946bSLuiz Capitulino 30*22f3946bSLuiz Capitulinodef usage_error(error_msg = "unspecified error"): 31*22f3946bSLuiz Capitulino sys.stderr.write('%s\nERROR: %s\n' % (usage(), error_msg)) 32*22f3946bSLuiz Capitulino exit(1) 33*22f3946bSLuiz Capitulino 34*22f3946bSLuiz Capitulinoif len(args) > 0: 35*22f3946bSLuiz Capitulino if args[0] == "-h": 36*22f3946bSLuiz Capitulino print usage() 37*22f3946bSLuiz Capitulino exit(0); 38*22f3946bSLuiz Capitulino elif args[0] == "-s": 39*22f3946bSLuiz Capitulino try: 40*22f3946bSLuiz Capitulino socket_path = args[1] 41*22f3946bSLuiz Capitulino except: 42*22f3946bSLuiz Capitulino usage_error("missing argument: QMP socket path or address"); 43*22f3946bSLuiz Capitulino args = args[2:] 44*22f3946bSLuiz Capitulino 45*22f3946bSLuiz Capitulinoif not socket_path: 46*22f3946bSLuiz Capitulino if os.environ.has_key('QMP_SOCKET'): 47*22f3946bSLuiz Capitulino socket_path = os.environ['QMP_SOCKET'] 48*22f3946bSLuiz Capitulino else: 49*22f3946bSLuiz Capitulino usage_error("no QMP socket path or address given"); 50*22f3946bSLuiz Capitulino 51*22f3946bSLuiz Capitulinosrv = QEMUMonitorProtocol(socket_path) 52*22f3946bSLuiz Capitulinosrv.connect() 53*22f3946bSLuiz Capitulino 54*22f3946bSLuiz Capitulinoif len(args) == 0: 55*22f3946bSLuiz Capitulino print '/' 56*22f3946bSLuiz Capitulino sys.exit(0) 57*22f3946bSLuiz Capitulino 58*22f3946bSLuiz Capitulinofor item in srv.command('qom-list', path=args[0]): 59*22f3946bSLuiz Capitulino if item['type'].startswith('child<'): 60*22f3946bSLuiz Capitulino print '%s/' % item['name'] 61*22f3946bSLuiz Capitulino elif item['type'].startswith('link<'): 62*22f3946bSLuiz Capitulino print '@%s/' % item['name'] 63*22f3946bSLuiz Capitulino else: 64*22f3946bSLuiz Capitulino print '%s' % item['name'] 65