Adding a means to connect back to a pydevd debugger.
That patch allows a developer to remotely run a pydev debugger and have the keystone-all process connect back to it. Two command line options are introduced: --pydev-debug-host <host> --pydev-debug-port <port> both of the above options are required to enable this behavior. This patch only enables this behavior when the service is started with keystone-all. In the future parts of this patch can be used to enable this behavior when running in Apache. Change-Id: I92f99fa34112336a96e42e8261b7313f23ee994e
This commit is contained in:
parent
ac2d92ca2e
commit
0f225743e8
@ -91,6 +91,13 @@ if __name__ == '__main__':
|
||||
sys.exit(1)
|
||||
|
||||
monkeypatch_thread = not CONF.standard_threads
|
||||
pydev_debug_url = utils.setup_remote_pydev_debug()
|
||||
if pydev_debug_url:
|
||||
# in order to work around errors caused by monkey patching we have to
|
||||
# set the thread to False. An explanation is here:
|
||||
# http://lists.openstack.org/pipermail/openstack-dev/2012-August/
|
||||
# 000794.html
|
||||
monkeypatch_thread = False
|
||||
eventlet.patcher.monkey_patch(all=False, socket=True, time=True,
|
||||
thread=monkeypatch_thread)
|
||||
|
||||
|
@ -292,3 +292,22 @@ def hash_signed_token(signed_text):
|
||||
hash_ = hashlib.md5()
|
||||
hash_.update(signed_text)
|
||||
return hash_.hexdigest()
|
||||
|
||||
|
||||
def setup_remote_pydev_debug():
|
||||
if CONF.pydev_debug_host and CONF.pydev_debug_port:
|
||||
error_msg = ('Error setting up the debug environment. Verify that the'
|
||||
' option --debug-url has the format <host>:<port> and '
|
||||
'that a debugger processes is listening on that port.')
|
||||
|
||||
try:
|
||||
from pydev import pydevd
|
||||
|
||||
pydevd.settrace(CONF.pydev_debug_host,
|
||||
port=CONF.pydev_debug_port,
|
||||
stdoutToServer=True,
|
||||
stderrToServer=True)
|
||||
return True
|
||||
except:
|
||||
LOG.exception(_(error_msg))
|
||||
raise
|
||||
|
@ -125,6 +125,9 @@ def register_cli_int(*args, **kw):
|
||||
|
||||
register_cli_bool('standard-threads', default=False)
|
||||
|
||||
register_cli_str('pydev-debug-host', default=None)
|
||||
register_cli_int('pydev-debug-port', default=None)
|
||||
|
||||
register_str('admin_token', default='ADMIN')
|
||||
register_str('bind_host', default='0.0.0.0')
|
||||
register_str('compute_port', default=8774)
|
||||
|
Loading…
Reference in New Issue
Block a user