 bf20b675cc
			
		
	
	
		bf20b675cc
		
	
	
	
	
		
			
			Since commit 068cf7a44cd4d65c05aa877dbebced295be5ce44, qmp-shell
is broken:
  $ ./scripts/qmp/qmp-shell
  Traceback (most recent call last):
    File "./scripts/qmp/qmp-shell", line 70, in <module>
      from . import qmp
  ValueError: Attempted relative import in non-package
Relative imports don't work on scripts that are executed
directly, so revert the change on the scripts inside scripts/qmp.
Fixes: 068cf7a44cd4d65c05aa877dbebced295be5ce44
Reported-by: John Snow <jsnow@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20180621175451.7948-1-ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
		
	
			
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python
 | |
| ##
 | |
| # QEMU Object Model test tools
 | |
| #
 | |
| # Copyright IBM, Corp. 2011
 | |
| # Copyright (c) 2013 SUSE LINUX Products GmbH
 | |
| #
 | |
| # Authors:
 | |
| #  Anthony Liguori   <aliguori@amazon.com>
 | |
| #  Andreas Faerber   <afaerber@suse.de>
 | |
| #
 | |
| # This work is licensed under the terms of the GNU GPL, version 2 or later.  See
 | |
| # the COPYING file in the top-level directory.
 | |
| ##
 | |
| 
 | |
| from __future__ import print_function
 | |
| 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 'QMP_SOCKET' in os.environ:
 | |
|         socket_path = os.environ['QMP_SOCKET']
 | |
|     else:
 | |
|         usage_error("no QMP socket path or address given");
 | |
| 
 | |
| srv = QEMUMonitorProtocol(socket_path)
 | |
| srv.connect()
 | |
| 
 | |
| def list_node(path):
 | |
|     print('%s' % path)
 | |
|     items = srv.command('qom-list', path=path)
 | |
|     for item in items:
 | |
|         if not item['type'].startswith('child<'):
 | |
|             try:
 | |
|                 print('  %s: %s (%s)' % (item['name'], srv.command('qom-get', path=path, property=item['name']), item['type']))
 | |
|             except:
 | |
|                 print('  %s: <EXCEPTION> (%s)' % (item['name'], item['type']))
 | |
|     print('')
 | |
|     for item in items:
 | |
|         if item['type'].startswith('child<'):
 | |
|             list_node((path if (path != '/') else '')  + '/' + item['name'])
 | |
| 
 | |
| if len(args) == 0:
 | |
|     path = '/'
 | |
| else:
 | |
|     path = args[0]
 | |
| 
 | |
| list_node(path)
 |