¡@

Home 

OpenStack Study: all.py

OpenStack Index

**** CubicPower OpenStack Study ****

def main():

    config.parse_args(sys.argv)

    logging.setup("nova")

    LOG = logging.getLogger('nova.all')

    utils.monkey_patch()

    launcher = service.process_launcher()

    # nova-api

    for api in CONF.enabled_apis:

        try:

            should_use_ssl = api in CONF.enabled_ssl_apis

            server = service.WSGIService(api, use_ssl=should_use_ssl)

            launcher.launch_service(server, workers=server.workers or 1)

        except (Exception, SystemExit):

            LOG.exception(_('Failed to load %s') % '%s-api' % api)

    for mod in [s3server, xvp_proxy]:

        try:

            launcher.launch_service(mod.get_wsgi_server())

        except (Exception, SystemExit):

            LOG.exception(_('Failed to load %s') % mod.__name__)

    for binary in ['nova-compute', 'nova-network', 'nova-scheduler',

                   'nova-cert', 'nova-conductor']:

        # FIXME(sirp): Most service configs are defined in nova/service.py, but

        # conductor has set a new precedent of storing these configs

        # nova//api.py.

        #

        # We should update the existing services to use this new approach so we

        # don't have to treat conductor differently here.

        if binary == 'nova-conductor':

            topic = CONF.conductor.topic

            manager = CONF.conductor.manager

        else:

            topic = None

            manager = None

        try:

            launcher.launch_service(service.Service.create(binary=binary,

                                                           topic=topic,

                                                          manager=manager))

        except (Exception, SystemExit):

            LOG.exception(_('Failed to load %s'), binary)

    launcher.wait()