]> xenbits.xensource.com Git - people/vhanquez/xen.git/commitdiff
tools/python: fix xm list for Python 2.7
authorKeith Coleman <keith.coleman@n2servers.com>
Wed, 21 Dec 2011 01:17:17 +0000 (20:17 -0500)
committerKeith Coleman <keith.coleman@n2servers.com>
Wed, 21 Dec 2011 01:17:17 +0000 (20:17 -0500)
This patch fixes
  Unexpected error: <type 'exceptions.AttributeError'>
This is due to xmlrpc changes in Python 2.7.  This patch should
fixe it for both old and new versions.

Signed-off-by: Michael Young <m.a.young@durham.ac.uk>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
xen-unstable changeset:   22045:2940165380de
xen-unstable date:        Thu Aug 19 17:09:30 2010 +0100

tools/python/xen/util/xmlrpcclient.py
tools/python/xen/util/xmlrpclib2.py

index 5b8831713c5c0ff6787d7cb4f8aa3787a5596eb2..d4191b7489b7292d8c07af28729bd8bf7d3ef8a1 100644 (file)
@@ -22,6 +22,7 @@ import socket
 import string
 import xmlrpclib
 from types import StringTypes
+from sys import hexversion
 
 
 try:
@@ -54,7 +55,12 @@ class UnixTransport(xmlrpclib.Transport):
         return xmlrpclib.Transport.request(self, host, '/RPC2',
                                            request_body, verbose)
     def make_connection(self, host):
-        return HTTPUnix(self.__handler)
+        if hexversion < 0x02070000:
+            # python 2.6 or earlier
+            return HTTPUnix(self.__handler)
+        else:
+            # xmlrpclib.Transport changed in python 2.7
+            return HTTPUnixConnection(self.__handler)
 
 
 # We need our own transport for HTTPS, because xmlrpclib.SafeTransport is
index a503de12412cb0cd2c2120145047e580673b3e00..065a0a3e965cf844a8740612fc782cfc7c93fb09 100644 (file)
@@ -58,6 +58,9 @@ def stringify(value):
 # some bugs in Keep-Alive handling and also enabled it by default
 class XMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
     protocol_version = "HTTP/1.1"
+    # xend crashes in python 2.7 unless disable_nagle_algorithm = False
+    # it isn't used in earlier versions so it is harmless to set it generally
+    disable_nagle_algorithm = False
 
     def __init__(self, hosts_allowed, request, client_address, server):
         self.hosts_allowed = hosts_allowed