← Back to team overview

openstack team mailing list archive

openstack on RHEL 6.1

 

Hi All,

Several people have reported on IRC that they can't get openstack
working on RHEL 6.1. Starting the openstack-nova-network service (and
various others) causes this traceback:

(nova): TRACE:   File "/usr/lib64/python2.6/subprocess.py", line 725,
in communicate
(nova): TRACE:     stdout, stderr = self._communicate(input, endtime)
(nova): TRACE:   File "/usr/lib64/python2.6/subprocess.py", line 1322,
in _communicate
(nova): TRACE:     self.wait(timeout=self._remaining_time(endtime))
(nova): TRACE: TypeError: wait() got an unexpected keyword argument 'timeout'

Red Hat have backported the 'timeout' feature for subprocess.Popen to
Python-2.6.6 in RHEL 6.1. At first glance it looks like they've broken
subprocess but infact they haven't - its Eventlet that's causing the
problem because its 'wait' function doesn't expect the timeout
argument.

I've reported the problem upstream here:

https://bitbucket.org/which_linden/eventlet/issue/89/add-a-timeout-argument-to-subprocesspopen

The patch below fixed the problem for me:

--- /usr/lib/python2.6/site-packages/eventlet/green/subprocess.py.orig	2011-05-25
23:31:34.597271402 +0000
+++ /usr/lib/python2.6/site-packages/eventlet/green/subprocess.py	2011-05-25
23:33:24.055602468 +0000
@@ -32,7 +32,7 @@
                     setattr(self, attr, wrapped_pipe)
         __init__.__doc__ = subprocess_orig.Popen.__init__.__doc__

-    def wait(self, check_interval=0.01):
+    def wait(self, check_interval=0.01, timeout=None):
         # Instead of a blocking OS call, this version of wait() uses logic
         # borrowed from the eventlet 0.2 processes.Process.wait() method.
         try:

--
Dave