From 11af89cd8c76122f9f5a23e56812537a2d45d001 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Tue, 22 Feb 2022 17:53:24 +0100 Subject: [PATCH] Wrap reports and tool_shed app in static That broke in https://github.com/galaxyproject/galaxy/pull/13103, but we only noticed it when we started the apps with gunicorn instead of uwsgi, since uwsgi has its own static mapping. --- lib/galaxy/web_stack/__init__.py | 2 +- lib/galaxy/webapps/base/webapp.py | 4 ++-- lib/galaxy/webapps/galaxy/buildapp.py | 10 +++------- lib/galaxy/webapps/reports/buildapp.py | 5 +++++ lib/tool_shed/webapp/buildapp.py | 5 +++++ 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/galaxy/web_stack/__init__.py b/lib/galaxy/web_stack/__init__.py index 5993d40d075..2310a8ff63b 100644 --- a/lib/galaxy/web_stack/__init__.py +++ b/lib/galaxy/web_stack/__init__.py @@ -264,7 +264,7 @@ class UWSGIApplicationStack(MessageApplicationStack): """ name = 'uWSGI' prohibited_middleware = frozenset({ - 'wrap_in_static', + 'build_url_map', 'EvalException', }) transport_class = UWSGIFarmMessageTransport diff --git a/lib/galaxy/webapps/base/webapp.py b/lib/galaxy/webapps/base/webapp.py index e16a0aaba4b..a67d34fe8cf 100644 --- a/lib/galaxy/webapps/base/webapp.py +++ b/lib/galaxy/webapps/base/webapp.py @@ -983,7 +983,7 @@ def build_native_uwsgi_app(paste_factory, config_section): return uwsgi_app -def build_url_map(app, global_conf, local_conf): +def build_url_map(app, global_conf, **local_conf): from paste.urlmap import URLMap from galaxy.web.framework.middleware.static import CacheableStaticURLParser as Static urlmap = URLMap() @@ -1013,4 +1013,4 @@ def build_url_map(app, global_conf, local_conf): if 'static_local_dir' in conf: urlmap["/static_local"] = Static(conf["static_local_dir"], cache_time) - return urlmap, cache_time + return urlmap diff --git a/lib/galaxy/webapps/galaxy/buildapp.py b/lib/galaxy/webapps/galaxy/buildapp.py index 44b08ca5c8b..0ed5ebcbb9f 100644 --- a/lib/galaxy/webapps/galaxy/buildapp.py +++ b/lib/galaxy/webapps/galaxy/buildapp.py @@ -25,6 +25,7 @@ from galaxy.web.framework.middleware.batch import BatchMiddleware from galaxy.web.framework.middleware.error import ErrorMiddleware from galaxy.web.framework.middleware.request_id import RequestIDMiddleware from galaxy.web.framework.middleware.xforwardedhost import XForwardedHostMiddleware +from galaxy.webapps.base.webapp import build_url_map from galaxy.webapps.util import wrap_if_allowed log = logging.getLogger(__name__) @@ -209,9 +210,9 @@ def app_pair(global_conf, load_app_kwds=None, wsgi_preflight=True, **kwargs): if kwargs.get('middleware', True): webapp = wrap_in_middleware(webapp, global_conf, app.application_stack, **kwargs) if asbool(kwargs.get('static_enabled', True)): - webapp = wrap_if_allowed(webapp, app.application_stack, wrap_in_static, + webapp = wrap_if_allowed(webapp, app.application_stack, build_url_map, args=(global_conf,), - kwargs=dict(plugin_frameworks=[app.visualizations_registry], **kwargs)) + kwargs=kwargs) app.application_stack.register_postfork_function(postfork_setup) for th in threading.enumerate(): @@ -1400,8 +1401,3 @@ def wrap_in_middleware(app, global_conf, application_stack, **local_conf): from galaxy.web.framework.middleware.sqldebug import SQLDebugMiddleware app = wrap_if_allowed(app, stack, SQLDebugMiddleware, args=(webapp, {})) return app - - -def wrap_in_static(app, global_conf, plugin_frameworks=None, **local_conf): - urlmap, cache_time = galaxy.webapps.base.webapp.build_url_map(app, global_conf, local_conf) - return urlmap diff --git a/lib/galaxy/webapps/reports/buildapp.py b/lib/galaxy/webapps/reports/buildapp.py index 86508116077..e0f01db1451 100644 --- a/lib/galaxy/webapps/reports/buildapp.py +++ b/lib/galaxy/webapps/reports/buildapp.py @@ -13,6 +13,7 @@ import galaxy.model.mapping import galaxy.webapps.base.webapp from galaxy.util import asbool from galaxy.util.properties import load_app_properties +from galaxy.webapps.base.webapp import build_url_map from galaxy.webapps.util import wrap_if_allowed log = logging.getLogger(__name__) @@ -68,6 +69,10 @@ def app_factory(global_conf, load_app_kwds=None, **kwargs): # Wrap the webapp in some useful middleware if kwargs.get('middleware', True): webapp = wrap_in_middleware(webapp, global_conf, app.application_stack, **kwargs) + if asbool(kwargs.get('static_enabled', True)): + webapp = wrap_if_allowed(webapp, app.application_stack, build_url_map, + args=(global_conf,), + kwargs=kwargs) return webapp diff --git a/lib/tool_shed/webapp/buildapp.py b/lib/tool_shed/webapp/buildapp.py index 48ab3dee0ac..87fb4636823 100644 --- a/lib/tool_shed/webapp/buildapp.py +++ b/lib/tool_shed/webapp/buildapp.py @@ -15,6 +15,7 @@ import galaxy.webapps.base.webapp from galaxy import util from galaxy.util import asbool from galaxy.util.properties import load_app_properties +from galaxy.webapps.base.webapp import build_url_map from galaxy.webapps.util import wrap_if_allowed log = logging.getLogger(__name__) @@ -190,6 +191,10 @@ def app_factory(global_conf, load_app_kwds=None, **kwargs): # Wrap the webapp in some useful middleware if kwargs.get('middleware', True): webapp = wrap_in_middleware(webapp, global_conf, app.application_stack, **kwargs) + if asbool(kwargs.get('static_enabled', True)): + webapp = wrap_if_allowed(webapp, app.application_stack, build_url_map, + args=(global_conf,), + kwargs=kwargs) return webapp