使用Devstack進行開發

Rookie發表於2019-02-16

翻譯自 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 服務。

相關文章