qmp.py: Encode json data before sending
authorEduardo Habkost <ehabkost@redhat.com>
Mon, 12 Mar 2018 18:55:02 +0000 (15:55 -0300)
committerEduardo Habkost <ehabkost@redhat.com>
Mon, 12 Mar 2018 22:10:16 +0000 (19:10 -0300)
On Python 3, json.dumps() return a str object, which can't be
sent directly through a socket and must be encoded into a bytes
object.  Use .encode('utf-8'), which will work on both Python 2
and Python 3.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20180312185503.5746-3-ehabkost@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
scripts/qmp/qmp.py

index 07c9632e9e261247b2dcc46a1ec3a47395ca2c00..5c8cf6a05658979ce235c53bdf0a3064f5e00d09 100644 (file)
@@ -166,7 +166,7 @@ class QEMUMonitorProtocol(object):
         """
         self.logger.debug(">>> %s", qmp_cmd)
         try:
-            self.__sock.sendall(json.dumps(qmp_cmd))
+            self.__sock.sendall(json.dumps(qmp_cmd).encode('utf-8'))
         except socket.error as err:
             if err[0] == errno.EPIPE:
                 return