安装和设置

Ubuntu、Fedora 和 SUSE/openSUSE

首先,克隆 git 仓库

git clone https://github.com/ceph/teuthology.git

接下来,运行引导脚本,假设您有 sudo 权限,它会为您完成所有操作

cd teuthology
./bootstrap

最后,激活 virtualenv

source virtualenv/bin/activate

运行 teuthology 命令以确认一切正常。例如

teuthology --help

MacOS X

bootstrap 脚本最近已更新,以支持使用 homebrew 的 MacOS X

./bootstrap

注意:某些功能在 MacOS X 上可能无法正常工作。鼓励提交补丁,但我们从未将在一台 Mac 上运行完整的 teuthology 设置作为我们的目标。

其他操作系统

欢迎提交补丁以添加对其他操作系统的 bootstrap 支持。在此之前,可以手动安装

首先安装非 PyPI 依赖项

python-dev python-pip python-virtualenv libevent-dev python-libvirt

接下来,克隆其 git 仓库,创建 virtualenv,并安装依赖项。说明如下

git clone https://github.com/ceph/teuthology/
cd teuthology
virtualenv --python python3 ./virtualenv
source virtualenv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
python setup.py develop

PyPI 中的 Teuthology

但是,如果您愿意,可以从 PyPI 安装 teuthology

pip install teuthology

注意:PyPI 中的版本可能()落后于开发版本。

或者从 GitHub 安装

pip install git+https://github.com/ceph/teuthology#egg=teuthology[orchestra]

其中安装了用于协调的依赖项。它们用于与服务交互以安排测试并报告测试结果。

更新依赖项

我们使用 requirements.txt 来跟踪依赖项。这些包经过测试,应该可以与 teuthology 一起使用。但是,如果您想提高它们的版本,请使用以下命令更新这些文件

./update-requirements.sh -P <package-name>

请使用以下命令升级 pip-tool

pip install pip-tools --upgrade

如果上述命令失败,例如

Traceback (most recent call last):
File "/home/kchai/teuthology/virtualenv/bin/pip-compile", line 5, in <module>
  from piptools.scripts.compile import cli
File "/home/kchai/teuthology/virtualenv/local/lib/python2.7/site-packages/piptools/scripts/compile.py", line 11, in <module>
  from pip.req import InstallRequirement, parse_requirements
ImportError: No module named req

添加依赖项

td,dr: 请在 setup.pyrequirements.in 中添加新的依赖项。

我们还在一些 Ceph 的单元测试中使用 pip install <URL> 来安装 teuthology。为了满足他们的需求,一些要求也列在了 setup.py 中,以便 pip install 可以获取它们。我们可以通过将

-e .[orchestra,test]

放入 requirements.in 中来避免在两个地方重复包规范。但是 dependabot 会将

-e file:///home/dependabot/dependabot-updater/tmp/dependabot_20200617-72-1n8af4b  # via -r requirements.in

包含在生成的 requirements.txt 中。这使得创建的拉取请求在没有人为干预的情况下毫无用处。为了安抚 dependabot,我们改用了一个完整的 requirements.in,它收集了 setup.py 列出的所有直接依赖项。