首页 > 代码库 > nova分析(2)—— nova-all
nova分析(2)—— nova-all
nova-all是一个用来启动所有nova服务的辅助脚本,注意只是启动所有服务,不包括停止和重启等功能。
nova-all的入口在 nova.cmd.all:main ,脚本也比较简单,这儿就贴下代码了
def main(): # 命令行参数解析,实际上命令行参数并没有使用 config.parse_args(sys.argv) logging.setup("nova") LOG = logging.getLogger(‘nova.all‘) utils.monkey_patch() objects.register_all() launcher = service.process_launcher() # 启动API以提供Rest服务,也就是nova-api(以WSGIService方式启动) 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) # 启动s3server(基于本地文件实现S3式的存储服务) # 启动xvp_proxy(VNC代理,支持基于java的vnc客户端) # 这两个服务都是以wsgi.Server方式启动 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__) # 其他的服务以Service方式启动 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/<service>/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()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。