Allow pecan debug middleware to be turned off

The Pecan DebugMiddleware is turned on or off based on the
ceilometer.conf-wide debug setting. This is not useful for situations
where running ceilometer-api under mod_wsgi with multiple processes
is desired.

This change adds a pecan_debug setting to the api section of config,
defaulting to the DEFAULT debug value. mod_wsgi install docs updated
accordingly.

Configuration docs have not yet been udpated. They will be pending a
fix to bug 1370030

Closes-Bug: #1370009

Change-Id: Ib4a472e3c8d1f34f64a5f3ab993c1211dee8af9a
This commit is contained in:
Chris Dent 2014-09-16 13:13:00 +01:00
parent 85b859f42f
commit 8691ba8086
2 changed files with 14 additions and 9 deletions

View File

@ -40,8 +40,17 @@ auth_opts = [
),
]
api_opts = [
cfg.BoolOpt('pecan_debug',
default='$debug',
help='Toggle Pecan Debug Middleware. '
'Defaults to global debug value.'
),
]
CONF = cfg.CONF
CONF.register_opts(auth_opts)
CONF.register_opts(api_opts, group='api')
def get_pecan_config():
@ -70,7 +79,7 @@ def setup_app(pecan_config=None, extra_hooks=None):
pecan_config.app.root,
static_root=pecan_config.app.static_root,
template_path=pecan_config.app.template_path,
debug=CONF.debug,
debug=CONF.api.pecan_debug,
force_canonical=getattr(pecan_config.app, 'force_canonical', True),
hooks=app_hooks,
wrap_app=middleware.ParsableErrorMiddleware,
@ -83,7 +92,7 @@ def setup_app(pecan_config=None, extra_hooks=None):
class VersionSelectorApplication(object):
def __init__(self):
pc = get_pecan_config()
pc.app.debug = CONF.debug
pc.app.debug = CONF.api.pecan_debug
def not_found(environ, start_response):
start_response('404 Not Found', [])

View File

@ -60,10 +60,6 @@ Limitation
As Ceilometer is using Pecan and Pecan's DebugMiddleware doesn't support
multiple processes, there is no way to set debug mode in the multiprocessing
case. So user will run into HTTP 500 error if the mod_wsgi's multiprocessing
is enabled and the Ceilometer debug mode is enabled at the same time. There
is no good way to make both of them work, since Pecan is sharing the debug
mode with Ceilometer, see[1]. If you really need to enable both, a possible
workaround is hacking that line and hardcode the debug configration to False.
[1] https://github.com/openstack/ceilometer/blob/master/ceilometer/api/app.py
case. To allow multiple processes the DebugMiddleware may be turned off by
setting ``pecan_debug`` to ``False`` in the ``api`` section of
``ceilometer.conf``.