Installation and setup

Ubuntu, Fedora & SUSE/openSUSE

First, clone the git repository:

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

Next, run the bootstrap script, which will do everything for you assuming you have sudo:

cd teuthology
./bootstrap

Finally, activate the virtualenv:

source virtualenv/bin/activate

Run a teuthology command to confirm that everything’s working. For instance:

teuthology --help

MacOS X

The bootstrap script was recently updated to support MacOS X using homebrew:

./bootstrap

Note: Certain features might not work properly on MacOS X. Patches are encouraged, but it has never been a goal of ours to run a full teuthology setup on a Mac.

Other operating systems

Patches are welcomed to add bootstrap support for other operating systems. Until then, manual installs are possible

First install the non-PyPI dependencies:

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

Next, clone its git repository, create a virtualenv, and install dependencies. The instructions are given below:

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

Teuthology in PyPI

However if you prefer, you may install teuthology from PyPI:

pip install teuthology

Note: The version in PyPI can be (far) behind the development version.

Or from GitHub:

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

where the dependencies for orchestrating are installed. They are used for interacting with the services to schedule tests and to report the test results.

Update Dependencies

We track the dependencies using requirements.txt. These packages are tested, and should work with teuthology. But if you want to bump up the versions of them, please use the following command to update these files:

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

Please upgrade pip-tool using following command

pip install pip-tools --upgrade

if the command above fails like:

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

Add Dependencies

td,dr: please add the new dependencies in both setup.py and requirements.in.

We also use pip install <URL> to install teuthology in some Ceph’s unit tests. To cater their needs, some requirements are listed in setup.py as well, so that pip install can pick them up. We could just avoid duplicating the packages specifications in two places by putting:

-e .[orchestra,test]

in requirements.in. But dependabot includes:

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

in the generated requirements.txt. This renders the created pull request useless without human intervention. To appease dependabot, a full-blown requirements.in collecting all direct dependencies listed by setup.py is used instead.