@

Home 

OpenStack Study: debugger.py

OpenStack Index

**** CubicPower OpenStack Study ****

def enabled():

    return ('--remote_debug-host' in sys.argv and

            '--remote_debug-port' in sys.argv)

**** CubicPower OpenStack Study ****

def register_cli_opts():

    from oslo.config import cfg

    cli_opts = [

        cfg.StrOpt('host',

                    help='Debug host (IP or name) to connect. Note '

                        'that using the remote debug option changes how '

                        'Nova uses the eventlet library to support async IO. '

                        'This could result in failures that do not occur '

                        'under normal operation. Use at your own risk.'),

        cfg.IntOpt('port',

                    help='Debug port to connect. Note '

                        'that using the remote debug option changes how '

                        'Nova uses the eventlet library to support async IO. '

                        'This could result in failures that do not occur '

                        'under normal operation. Use at your own risk.')

    ]

    cfg.CONF.register_cli_opts(cli_opts, 'remote_debug')

**** CubicPower OpenStack Study ****

def init():

    from oslo.config import cfg

    CONF = cfg.CONF

    # NOTE(markmc): gracefully handle the CLI options not being registered

    if 'remote_debug' not in CONF:

        return

    if not (CONF.remote_debug.host and CONF.remote_debug.port):

        return

    from nova.openstack.common.gettextutils import _

    from nova.openstack.common import log as logging

    LOG = logging.getLogger(__name__)

    LOG.debug(_('Listening on %(host)s:%(port)s for debug connection'),

              {'host': CONF.remote_debug.host,

               'port': CONF.remote_debug.port})

    from pydev import pydevd

    pydevd.settrace(host=CONF.remote_debug.host,

                    port=CONF.remote_debug.port,

                    stdoutToServer=False,

                    stderrToServer=False)

    LOG.warn(_('WARNING: Using the remote debug option changes how '

               'Nova uses the eventlet library to support async IO. This '

               'could result in failures that do not occur under normal '

               'operation. Use at your own risk.'))