使用 Devstack 进行开发

标签

  • openstack
  • devstack
  • 翻译

翻译自 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 服务。

本文章首发在 PythonCaff

多少事,从来急。天地转,光阴迫。

欢迎点赞评论还有分享☭☭☭