scripts: add a 'debug' parameter to QEMUMonitorProtocol

Add a 'debug' parameter to the QEMUMonitorProtocol class
which will cause it to print out all JSON strings on
sys.stderr

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <1469020993-29426-3-git-send-email-berrange@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
This commit is contained in:
Daniel P. Berrange 2016-07-20 14:23:09 +01:00 committed by Amit Shah
parent 6f7a4a81ce
commit 991e7c4650

View File

@ -11,6 +11,7 @@
import json import json
import errno import errno
import socket import socket
import sys
class QMPError(Exception): class QMPError(Exception):
pass pass
@ -25,7 +26,7 @@ class QMPTimeoutError(QMPError):
pass pass
class QEMUMonitorProtocol: class QEMUMonitorProtocol:
def __init__(self, address, server=False): def __init__(self, address, server=False, debug=False):
""" """
Create a QEMUMonitorProtocol class. Create a QEMUMonitorProtocol class.
@ -39,6 +40,7 @@ class QEMUMonitorProtocol:
""" """
self.__events = [] self.__events = []
self.__address = address self.__address = address
self._debug = debug
self.__sock = self.__get_sock() self.__sock = self.__get_sock()
if server: if server:
self.__sock.bind(self.__address) self.__sock.bind(self.__address)
@ -68,6 +70,8 @@ class QEMUMonitorProtocol:
return return
resp = json.loads(data) resp = json.loads(data)
if 'event' in resp: if 'event' in resp:
if self._debug:
print >>sys.stderr, "QMP:<<< %s" % resp
self.__events.append(resp) self.__events.append(resp)
if not only_event: if not only_event:
continue continue
@ -148,13 +152,18 @@ class QEMUMonitorProtocol:
@return QMP response as a Python dict or None if the connection has @return QMP response as a Python dict or None if the connection has
been closed been closed
""" """
if self._debug:
print >>sys.stderr, "QMP:>>> %s" % qmp_cmd
try: try:
self.__sock.sendall(json.dumps(qmp_cmd)) self.__sock.sendall(json.dumps(qmp_cmd))
except socket.error as err: except socket.error as err:
if err[0] == errno.EPIPE: if err[0] == errno.EPIPE:
return return
raise socket.error(err) raise socket.error(err)
return self.__json_read() resp = self.__json_read()
if self._debug:
print >>sys.stderr, "QMP:<<< %s" % resp
return resp
def cmd(self, name, args=None, id=None): def cmd(self, name, args=None, id=None):
""" """