This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


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

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Re: xm list problem with python 2.7
From: M A Young <m.a.young@xxxxxxxxxxxx>
Date: Wed, 18 Aug 2010 09:43:29 +0100 (BST)
Delivery-date: Wed, 18 Aug 2010 01:44:44 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <alpine.LFD.2.00.1008071800430.24624@xxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <alpine.LFD.2.00.1008071800430.24624@xxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Alpine 2.00 (LFD 1167 2008-08-23)
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'>

Please report to xen-devel@xxxxxxxxxxxxxxxxxxx
Traceback (most recent call last):
 File "/usr/sbin/xm", line 7, in <module>
File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 3616, in main
   _, rc = _run_cmd(cmd, cmd_name, args)
File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 3640, in _run_c
   return True, cmd(args)
File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 969, in xm_list
   doms = getDomains(params, state, use_long)
File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 933, in getDoma
   return server.xend.domains_with_state(True, state, full)
 File "/usr/lib64/python2.7/xmlrpclib.py", line 1224, in __call__
   return self.__send(self.__name, args)
File "/usr/lib64/python2.7/site-packages/xen/util/xmlrpcclient.py", line 118,
in __request
   response = xmlrpclib.ServerProxy.__request(self, methodname, params)
 File "/usr/lib64/python2.7/xmlrpclib.py", line 1570, in __request
File "/usr/lib64/python2.7/site-packages/xen/util/xmlrpcclient.py", line 55, i
n request
   request_body, verbose)
 File "/usr/lib64/python2.7/xmlrpclib.py", line 1264, in request
   return self.single_request(host, handler, request_body, verbose)
 File "/usr/lib64/python2.7/xmlrpclib.py", line 1294, in single_request
   response = h.getresponse(buffering=True)
AttributeError: HTTPUnix instance has no attribute 'getresponse'

I eventually tracked this down to xmlrpc changes in python 2.7 . 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.

        Michael Young

--- 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-15 
22:52:22.000000000 +0100
@@ -54,7 +54,7 @@
         return xmlrpclib.Transport.request(self, host, '/RPC2',
                                            request_body, verbose)
     def make_connection(self, host):
-        return HTTPUnix(self.__handler)
+        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-17 
23:56:26.000000000 +0100
@@ -61,6 +61,7 @@

     def __init__(self, hosts_allowed, request, client_address, server):
         self.hosts_allowed = hosts_allowed
+        self.disable_nagle_algorithm = False
         SimpleXMLRPCRequestHandler.__init__(self, request, client_address,

Xen-devel mailing list