提示:本文基于openstack liberty版本源码进行梳理


文章目录

  • 前言
  • 一、源代码获取
  • 二、程序入口定位
  • 定位入口详细流程
  • 三、源代码目录介绍
  • 总结



前言

本文简单介绍一下源码走读前的准备工作,提到了cinder启动到源码的联系,同时简单介绍了下cinder源码目录结构。
本文承接上文:【OpenStack】Cinder简介


一、源代码获取

再次提示本文基于Liberty版本进行梳理,所以我们从github克隆cinder代码,并切换到liberty版本

git clone https://github.com/openstack/cinder.git

cd cinder/

git checkout liberty-eol

二、程序入口定位

入口定位我这里有两种方式:

  1. 直接查看项目的setup.cfg文件进行跟踪
  2. 根据环境中启动服务的命令进行跟踪

第一种方式适合有了解setup tools的朋友,为了结合项目我这里使用第二种方式。

定位入口详细流程

由于这几个组件启动流程差不多。这里就拿cinder-api举例,由于不需要暴露Restful接口,另外三个模块启动流程反而简单些。

在环境中,查看cinder-api的service状态,可以获取到运行的脚本openstack-cinder-api.service

openstack源文件centos_openstack

然后我们执行下面指令查看openstack-cinder-api.service内容:

vim /usr/lib/systemd/system/openstack-cinder-api.service

可以看到这里实际上执行了/usr/bin/cinder-api

openstack源文件centos_git_02

然后我们再用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打开目录如下:

openstack源文件centos_python_03

在这一层中只有cinder是核心代码,其他的目录文件是一些配置文件和文档,后面主要分析的是cinder中的内容。

openstack源文件centos_git_04

参考文档:

  1. OpenStack Cinder 源码解读(基于Mitaka)(一)(源码体系结构)

总结

以上就是本文要讲的内容,本文仅仅简单介绍了cinder源码的获取和目录结构,后面将会基于volume的创建进行代码走读。