diff --git a/keystone/server/flask/application.py b/keystone/server/flask/application.py index f2de56b244..94b8f55041 100644 --- a/keystone/server/flask/application.py +++ b/keystone/server/flask/application.py @@ -20,7 +20,13 @@ import oslo_i18n from oslo_log import log from oslo_middleware import healthcheck import six -import werkzeug.wsgi + +try: + # werkzeug 0.15.x + from werkzeug.middleware import dispatcher as wsgi_dispatcher +except ImportError: + # werkzeug 0.14.x + import werkzeug.wsgi as wsgi_dispatcher import keystone.api from keystone import exception @@ -167,7 +173,7 @@ def application_factory(name='public'): # Use the simple form of the dispatch middleware, no extra logic needed # for legacy dispatching. This is to mount /healthcheck at a consistent # place - app.wsgi_app = werkzeug.wsgi.DispatcherMiddleware( + app.wsgi_app = wsgi_dispatcher.DispatcherMiddleware( app.wsgi_app, {'/healthcheck': hc_app}) return app diff --git a/keystone/server/flask/core.py b/keystone/server/flask/core.py index e79fca02c1..8c0c27a077 100644 --- a/keystone/server/flask/core.py +++ b/keystone/server/flask/core.py @@ -15,7 +15,13 @@ import os from oslo_log import log import stevedore -from werkzeug.contrib import fixers + +try: + # werkzeug 0.15.x + from werkzeug.middleware import proxy_fix +except ImportError: + # werkzeug 0.14.x + from werkzeug.contrib import fixers as proxy_fix from keystone.common import profiler import keystone.conf @@ -126,8 +132,8 @@ def setup_app_middleware(app): factory_func = loaded.driver.factory({}, **mw.conf) app.wsgi_app = factory_func(app.wsgi_app) - # Apply werkzeug speficic middleware - app.wsgi_app = fixers.ProxyFix(app.wsgi_app) + # Apply werkzeug specific middleware + app.wsgi_app = proxy_fix.ProxyFix(app.wsgi_app) return app