一 读源码,先弄清源码结构
一般对于一个工程而言(nova,keystone......),有
setup.py 文件 ,setup.cfg 配置文件 tox.ini 测试文件
对于一个新人来说,setup.cfg 是引导我们去阅读代码的一个很重要的文件,帮助我们认识项目代码结构
这个文件中有各种各样的sections
比如说:entry_points
[entry_points]
nova.compute.resources =
vcpu = nova.compute.resources.vcpu:VCPU
nova.image.download.modules =
file = nova.image.download.file
console_scripts =
nova-all = nova.cmd.all:main
nova-api = nova.cmd.api:main
nova-api-ec2 = nova.cmd.api_ec2:main
nova-api-metadata = nova.cmd.api_metadata:main
nova-api-os-compute = nova.cmd.api_os_compute:main
nova-cells = nova.cmd.cells:main
nova-cert = nova.cmd.cert:main
nova-compute = nova.cmd.compute:main
nova-conductor = nova.cmd.conductor:main
nova-console = nova.cmd.console:main
nova-consoleauth = nova.cmd.consoleauth:main
nova-dhcpbridge = nova.cmd.dhcpbridge:main
nova-idmapshift = nova.cmd.idmapshift:main
nova-manage = nova.cmd.manage:main
nova-network = nova.cmd.network:main
nova-novncproxy = nova.cmd.novncproxy:main
nova-objectstore = nova.cmd.objectstore:main
nova-rootwrap = oslo.rootwrap.cmd:main
nova-scheduler = nova.cmd.scheduler:main
这里面就表示:我们可以将其理解为,该项目提供的各种服务的入口点,也就是源码实现的位置在哪里
bin目录
<proj>-all 是项目的总入口
/nova/scheduler/__init__.py:这个模块的功能是挑选一个计算节点来运行一个虚拟机实例;
/nova/image/glance.py:使用Glance作为后端的镜像服务的实现;
/nova/api/openstack/__init__.py:OpenStack API控制器的WSGI中间件;
LocalAPI类:conductor API 的本地版本,这个类处理了本地数据库的更新,而不是通过RPC;
API类:通过RPC和ConductorManager类实现数据库的更新,实现Conductor的管理;
/nova/db/api.py:定义数据库访问接口;
/nova/network/api.py:API类:通过nova-network进行网络管理的API;
/nova/context.py:关于请求信息上下文的一些方法
/nova/exception.py:Nova基本的异常处理,包括各种异常类及其类中提示的异常信息;
/nova/filters.py:滤波器支持,定义了所有滤波器类的基类和处理加载滤波器类的基类;
/nova/manager.py:基本管理类;
/nova/notifications.py:系统常见的多层次通知的相关方法;
/nova/policy.py:Nova的Policy引擎;
/nova/quota.py:实例配额和浮动ip;
/nova/service.py:主机上运行所有服务的通用节点基类;
/nova/test.py:单元测试的基类;
/nova/utils.py:实用工具和辅助方法;
/nova/weights.py:可插拔权重支持;
/nova/wsgi.py:WSGI服务工作的通用方法;
三: paste.ini 文件
每个项目的etc 目录下都有一个paste文件,例如 nova/etc/nova-paste.ini 文件,部署时,这些配置文件会被复制到系统的/etc 目录下,pasteDeploy的工作便是基于这些配置文件,配置文件会分为多个section 每个section 以type:name 命名,type 有:composite ,app ,filter-app ,filter ,pipleline 几种类型