翻译自 devstack 官方文档 Developing with Devstack
检查服务
默认情况下,DevStack 的大多数服务都以 devstack@$servicename.service 的名字作为 system unit 运行。关于 system unit 可以参考Understanding system units and unit files。你可以通过以下命令行查看服务情况。
sudo systemctl status "devstack@*"
为服务添加补丁
如果你想为正在运行的服务做一些修改,最简单的办法是直接改变在 /opt/stack/$service(服务名) 里的代码,然后重启相关的守护进程。
sudo systemctl restart devstack@n-cpu.service
如果你的改变影响超过一个守护进程,你也可以使用通配符。
sudo systemctl restart "devstack@n-*"
测试补丁集
当你想测试某个很大的补丁集或影响一个项目内多个服务的补丁,使用自定义的 git 文件夹会减少开发的困惑也能让你的所有改变都能保存在专用的 git 分支。
大多数项目可以在 local.conf 中添加 **REPO 和 **_BRANCH 来使用自定义的 git 分支,而不是使用默认的上游分支。
例如:
[[local|localrc]] NOVA_REPO=/home/sdague/nova NOVA_BRANCH=fold_disk_config
将会让任何 devstack 操作如 stack.sh 使用自定义的 git 文件夹和分支。
当测试这些 git 文件夹的复杂提交时,进行 ./unstacksh && ./stack.sh 通常是一种较好的测试方法。由于每次都需要重建 openstack 服务,这种操作相比于直接打补丁每次测试间隔更长。
你也可以使用这种相同的方法,通过使用 gerrit 上 change id 来测试 gerrit 上 review 相应的补丁。
[[local|localrc]] NOVA_BRANCH=refs/changes/10/353710/1
测试修改的库
当测试被 Openstack 服务使用的库(比如 oslo 或 任何的 python 相应服务客户段)时事情开始变得有些复杂。默认情况下我们只使用 pypi 上的这些库的发行版本进行测试。
你首先必须通过设置 LIBS_FROM_GIT 来覆盖默认设置。这能让你的 Devstack 使用某个库相应的 git 版本,而非发行版本。
在这之后你也可以指明 **_REPO 和 **_BRANCH 来使用你的分支而非上游的主分支。
[[local|localrc]] LIBS_FROM_GIT=oslo.policy OSLOPOLICY_REPO=/home/sdague/oslo.policy OSLOPOLICY_BRANCH=better_exception
对于 pip 没有安装的库,你在进行任何修改后需要:
进入库的根目录
sudo pip install -U
重启使用新库的服务
你可以使用通配符来完成,比如
sudo systemctl restart "devstack@n-*"
这将会重启所有的 nova 服务。