]> git.proxmox.com Git - qemu.git/commitdiff
Make negotiation optional in QEMUMonitorProtocol
authorRyota Ozaki <ozaki.ryota@gmail.com>
Fri, 14 Sep 2012 12:44:20 +0000 (21:44 +0900)
committerLuiz Capitulino <lcapitulino@redhat.com>
Wed, 26 Sep 2012 13:45:02 +0000 (10:45 -0300)
This is a preparation for qemu-ga-client which uses
QEMUMonitorProtocol class. The class tries to
negotiate capabilities on connect, however, qemu-ga
doesn't suppose it and fails.

This change makes the negotiation optional, though
it's still performed by default for compatibility.

Signed-off-by: Ryota Ozaki <ozaki.ryota@gmail.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
QMP/qmp.py

index 36ecc1dfaeaae18528f00bfd4b902f1076452a98..5a573e1488bc1673bc0a9b8cbed12cea7a14ac27 100644 (file)
@@ -49,7 +49,6 @@ class QEMUMonitorProtocol:
         return socket.socket(family, socket.SOCK_STREAM)
 
     def __negotiate_capabilities(self):
-        self.__sockfile = self.__sock.makefile()
         greeting = self.__json_read()
         if greeting is None or not greeting.has_key('QMP'):
             raise QMPConnectError
@@ -73,7 +72,7 @@ class QEMUMonitorProtocol:
 
     error = socket.error
 
-    def connect(self):
+    def connect(self, negotiate=True):
         """
         Connect to the QMP Monitor and perform capabilities negotiation.
 
@@ -83,7 +82,9 @@ class QEMUMonitorProtocol:
         @raise QMPCapabilitiesError if fails to negotiate capabilities
         """
         self.__sock.connect(self.__address)
-        return self.__negotiate_capabilities()
+        self.__sockfile = self.__sock.makefile()
+        if negotiate:
+            return self.__negotiate_capabilities()
 
     def accept(self):
         """