]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Fix support for eventlet 0.9.16
authorTomas Sedovic <tomas@sedovic.cz>
Mon, 3 Sep 2012 14:59:57 +0000 (16:59 +0200)
committerTomas Sedovic <tomas@sedovic.cz>
Mon, 3 Sep 2012 15:03:29 +0000 (17:03 +0200)
The changes in c7059ae54ef2712e7599a6de30a631d3a0bb6bd2 were not enough
to provide compatibility with 0.9.16 and 0.9.17.ith 0.9.16 and 0.9.17.

Change-Id: Id1ddc988443e162f1c835505b619b7b45e86578d
Signed-off-by: Tomas Sedovic <tomas@sedovic.cz>
heat/common/wsgi.py

index 32b5bbcad3235fa4a86dbe5a6f0e8605efc29595..0a56618813c62dd313135019f636114b0ef585d5 100644 (file)
@@ -242,9 +242,9 @@ class Server(object):
         eventlet.patcher.monkey_patch(all=False, socket=True)
         self.pool = eventlet.GreenPool(size=self.threads)
         try:
-            eventlet.wsgi.server(self.sock, self.application,
-                    url_length_limit=URL_LENGTH_LIMIT,
+            eventlet_wsgi_server(self.sock, self.application,
                     custom_pool=self.pool,
+                    url_length_limit=URL_LENGTH_LIMIT,
                     log=WritableLogger(self.logger))
         except socket.error, err:
             if err[0] != errno.EINVAL:
@@ -254,12 +254,25 @@ class Server(object):
     def _single_run(self, application, sock):
         """Start a WSGI server in a new green thread."""
         self.logger.info(_("Starting single process server"))
-        eventlet.wsgi.server(sock, application,
+        eventlet_wsgi_server(sock, application,
                              custom_pool=self.pool,
                              url_length_limit=URL_LENGTH_LIMIT,
                              log=WritableLogger(self.logger))
 
 
+def eventlet_wsgi_server(sock, application, **kwargs):
+    '''
+    Return a new instance of the eventlet wsgi server with the proper url limit
+    in a way that's compatible with eventlet 0.9.16 and 0.9.17.
+    '''
+    try:
+        return eventlet.wsgi.server(sock, application, **kwargs)
+    # TODO(shadower) remove this when we don't support eventlet 0.9.16 anymore
+    except TypeError:
+        kwargs.pop('url_length_limit', None)
+        return eventlet.wsgi.server(sock, application, **kwargs)
+
+
 class Middleware(object):
     """
     Base WSGI middleware wrapper. These classes require an application to be