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