提示:本文基于openstack liberty版本源码进行梳理
文章目录
- 前言
- 一、源代码获取
- 二、程序入口定位
- 定位入口详细流程
- 三、源代码目录介绍
- 总结
前言
本文简单介绍一下源码走读前的准备工作,提到了cinder启动到源码的联系,同时简单介绍了下cinder源码目录结构。
本文承接上文:【OpenStack】Cinder简介
一、源代码获取
再次提示本文基于Liberty版本进行梳理,所以我们从github克隆cinder代码,并切换到liberty版本
git clone https://github.com/openstack/cinder.git
cd cinder/
git checkout liberty-eol
二、程序入口定位
入口定位我这里有两种方式:
- 直接查看项目的
setup.cfg
文件进行跟踪 - 根据环境中启动服务的命令进行跟踪
第一种方式适合有了解setup tools的朋友,为了结合项目我这里使用第二种方式。
定位入口详细流程
由于这几个组件启动流程差不多。这里就拿cinder-api举例,由于不需要暴露Restful接口,另外三个模块启动流程反而简单些。
在环境中,查看cinder-api的service状态,可以获取到运行的脚本openstack-cinder-api.service
然后我们执行下面指令查看openstack-cinder-api.service内容:
vim /usr/lib/systemd/system/openstack-cinder-api.service
可以看到这里实际上执行了/usr/bin/cinder-api
然后我们再用vim查看下这个文件,可以看到这是一个python脚本,调用了cinder.cmd.api的main方法:
#!/usr/bin/python2
# PBR Generated from u'console_scripts'
import sys
# 由第一行可知,这是个python shell,可以看到这里执行的是cinder.cmd.api下的main,这样cinder-api的入口就找到了
from cinder.cmd.api import main
if __name__ == "__main__":
sys.exit(main())
三、源代码目录介绍
拉下来的代码pycharm打开目录如下:
在这一层中只有cinder是核心代码,其他的目录文件是一些配置文件和文档,后面主要分析的是cinder中的内容。
参考文档:
- OpenStack Cinder 源码解读(基于Mitaka)(一)(源码体系结构)
总结
以上就是本文要讲的内容,本文仅仅简单介绍了cinder源码的获取和目录结构,后面将会基于volume的创建进行代码走读。