[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Re: xm list problem with python 2.7



On Wed, 18 Aug 2010, Ian Jackson wrote:

M A Young writes ("[Xen-devel] Re: xm list problem with python 2.7"):
On Sat, 7 Aug 2010, M A Young wrote:
If I try xm list (with xen-4.0.0) I get the following traceback

Unexpected error: <type 'exceptions.AttributeError'>
...
AttributeError: HTTPUnix instance has no attribute 'getresponse'

I eventually tracked this down to xmlrpc changes in python 2.7 .

Thanks for looking into this.  How irritating.

  The patch below fixes the xm problem, and a xend problem serving
xmlrpc. Note that the first part won't work as written with earlier
versions of python, though the second part is probably safe as
disable_nagle_algorithm was introduced in python 2.7.

Hrm.  Would you care to suggest a patch that should work for earlier
versions of python too ?  We can't really do something that breaks
everything before 2.7.  (I would say that we probably still support
back to 2.4 at least.)

Here is revised patch. I have tested it (without comments) in python 2.6 and 2.7 and should work in earlier versions.

Signed-off-by: Michael Young <m.a.young@xxxxxxxxxxxx>

--- xen-4.0.1/tools/python/xen/util/xmlrpcclient.py.orig        2010-02-02 
20:43:01.000000000 +0000
+++ xen-4.0.1/tools/python/xen/util/xmlrpcclient.py     2010-08-18 
21:36:05.000000000 +0100
@@ -22,6 +22,7 @@
 import string
 import xmlrpclib
 from types import StringTypes
+from sys import hexversion


 try:
@@ -54,7 +55,12 @@
         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
--- xen-4.0.1/tools/python/xen/util/xmlrpclib2.py.orig  2010-02-02 
20:43:01.000000000 +0000
+++ xen-4.0.1/tools/python/xen/util/xmlrpclib2.py       2010-08-18 
21:35:40.000000000 +0100
@@ -58,6 +58,9 @@
 # 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

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.