寻找Nova的入口函数,Nova的代码一部分部署上控制节点上,一部分部署在计算节点上
在centos上以包的方式安装时,控制节点安装完成后执行以下命令启动服务:
systemctl start openstack-nova-api.service openstack-nova-cert.service
openstack-nova-consoleauth.service openstack-nova-scheduler.service
openstack-nova-conductor.service openstack-nova-novncproxy.service
这些服务位于目录/usr/lib/systemd/system下,openstack-nova-api.service文件中设置的ExecStart=/usr/bin/nova-api,即服务启动时将执行/usr/bin/nova-api,该文件的代码如下,将执行nova/cmd/api.py文件中的main函数,类似的能找到各个服务的入口函数。
from nova.cmd.api import main
if __name__ == "__main__":
sys.exit(main())
第二种寻找入口函数的方式,nova目录下有一个文件setup.cfg,该文件中的[entry_points]字段定义了入口函数:
nova-api = nova.cmd.api:main
与第一种方式分析的结果一致。