virtualenv --python=$PYTHON $VENV
fi
-# Upgrade pip first - then we have a new pip version with the --use-feature flag
+# First, upgrade pip
./$VENV/bin/pip install --upgrade pip
-# Ensure setuptools is installed
-./$VENV/bin/pip install --use-feature=2020-resolver setuptools --upgrade
+# Remove leftover .pyc files
+find teuthology -name '*.pyc' -exec rm {} \;
-# Install all requirements
-./$VENV/bin/pip install --use-feature=2020-resolver --upgrade -r requirements.txt
+# Install teuthology in editable mode
+./$VENV/bin/pip install --editable .
# Check to make sure requirements are met
./$VENV/bin/pip check
-
-# Remove leftover .pyc files
-find teuthology -name '*.pyc' -exec rm {} \;
-
-# Install teuthology
-./$VENV/bin/python setup.py develop
--- /dev/null
+[build-system]
+requires = ["setuptools>=42"]
+build-backend = "setuptools.build_meta"
+++ /dev/null
-# install requires
-apache-libcloud
-gevent
-PyYAML
-argparse>=1.2.1
-configobj
-six>=1.9
-pexpect
-docopt
-netaddr
-paramiko
-pynacl >= 1.5.0 # for universal2 wheel
-psutil >= 2.1.0
-configparser
-ansible>=2.8,<2.10
-prettytable
-manhole
-humanfriendly
-# orchestra requires
-backports.ssl-match-hostname
-beanstalkc3>=0.4.0
-httplib2
-ndg-httpsclient
-pyasn1
-pyopenssl>=0.13
-python-dateutil
-python-novaclient
-python-openstackclient
-requests!=2.13.0
-sentry-sdk
-# test requires
-boto>=2.0b4
-boto3
-cryptography>=2.7
-nose
-pip-tools
-pytest
-mock
-requests
-tox
-xmltodict
-PyJWT
-ipy
-toml
# This file is autogenerated by pip-compile with python 3.9
# To update, run:
#
-# pip-compile requirements.in
+# pip-compile pyproject.toml
#
ansible==2.9.27
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
apache-libcloud==3.3.1
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
appdirs==1.4.4
# via openstacksdk
argparse==1.4.0
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
attrs==21.2.0
- # via
- # cmd2
- # pytest
-backports-entry-points-selectable==1.1.0
- # via virtualenv
+ # via cmd2
backports-ssl-match-hostname==3.7.0.1
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
bcrypt==3.2.0
# via paramiko
beanstalkc3==0.4.0
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
boto==2.49.0
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
boto3==1.21.20
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
botocore==1.24.20
# via
# boto3
colorama==0.4.4
# via cmd2
configobj==5.0.6
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
configparser==5.0.2
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
cryptography==3.4.7
# via
- # -r requirements.in
# ansible
# openstacksdk
# paramiko
# pyopenssl
+ # teuthology (pyproject.toml)
debtcollector==2.2.0
# via
# oslo-config
# via
# dogpile-cache
# openstacksdk
-distlib==0.3.2
- # via virtualenv
docopt==0.6.2
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
dogpile-cache==1.1.3
# via openstacksdk
-filelock==3.0.12
- # via
- # tox
- # virtualenv
gevent==21.8.0
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
greenlet==1.1.0
# via gevent
httplib2==0.19.1
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
humanfriendly==9.2
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
idna==3.2
# via requests
-iniconfig==1.1.1
- # via pytest
ipy==1.1
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
iso8601==0.1.16
# via
# keystoneauth1
# python-cinderclient
# python-keystoneclient
# python-novaclient
-manhole==1.8.0
- # via -r requirements.in
markupsafe==2.0.1
# via jinja2
-mock==4.0.3
- # via -r requirements.in
msgpack==1.0.2
# via oslo-serialization
munch==2.5.0
# via openstacksdk
ndg-httpsclient==0.5.1
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
netaddr==0.8.0
# via
- # -r requirements.in
# oslo-config
# oslo-utils
+ # teuthology (pyproject.toml)
netifaces==0.11.0
# via
# openstacksdk
# oslo-utils
-nose==1.3.7
- # via -r requirements.in
openstacksdk==0.58.0
# via
# osc-lib
# python-novaclient
# python-openstackclient
packaging==21.0
- # via
- # oslo-utils
- # pytest
- # tox
+ # via oslo-utils
paramiko==2.10.1
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
pbr==5.6.0
# via
# cliff
pep517==0.11.0
# via pip-tools
pexpect==4.8.0
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
pip-tools==6.2.0
- # via -r requirements.in
-platformdirs==2.2.0
- # via virtualenv
-pluggy==0.13.1
- # via
- # pytest
- # tox
+ # via teuthology (pyproject.toml)
prettytable==2.1.0
# via
- # -r requirements.in
# cliff
# python-cinderclient
# python-novaclient
+ # teuthology (pyproject.toml)
psutil==5.8.0
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
ptyprocess==0.7.0
# via pexpect
-py==1.10.0
- # via
- # pytest
- # tox
pyasn1==0.4.8
# via
- # -r requirements.in
# ndg-httpsclient
+ # teuthology (pyproject.toml)
pycparser==2.20
# via cffi
-pyjwt==2.1.0
- # via -r requirements.in
pynacl==1.5.0
# via
- # -r requirements.in
# paramiko
+ # teuthology (pyproject.toml)
pyopenssl==20.0.1
# via
- # -r requirements.in
# ndg-httpsclient
+ # teuthology (pyproject.toml)
pyparsing==2.4.7
# via
# cliff
# packaging
pyperclip==1.8.2
# via cmd2
-pytest==6.2.5
- # via -r requirements.in
python-cinderclient==8.0.0
# via python-openstackclient
python-dateutil==2.8.2
# via
- # -r requirements.in
# botocore
+ # teuthology (pyproject.toml)
python-keystoneclient==4.2.0
# via python-openstackclient
python-novaclient==17.5.0
# via
- # -r requirements.in
# python-openstackclient
+ # teuthology (pyproject.toml)
python-openstackclient==5.5.0
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
pytz==2021.1
# via
# oslo-serialization
# oslo-utils
pyyaml==5.4.1
# via
- # -r requirements.in
# ansible
# cliff
# openstacksdk
# oslo-config
+ # teuthology (pyproject.toml)
requests==2.27.1
# via
- # -r requirements.in
# apache-libcloud
# keystoneauth1
# oslo-config
# python-cinderclient
# python-keystoneclient
+ # teuthology (pyproject.toml)
requestsexceptions==1.4.0
# via openstacksdk
rfc3986==1.5.0
s3transfer==0.5.2
# via boto3
sentry-sdk==1.3.1
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
simplejson==3.17.3
# via
# osc-lib
# python-cinderclient
six==1.16.0
# via
- # -r requirements.in
# bcrypt
# configobj
# debtcollector
# keystoneauth1
# munch
# oslo-i18n
- # paramiko
# pyopenssl
# python-dateutil
# python-keystoneclient
- # tox
- # virtualenv
+ # teuthology (pyproject.toml)
stevedore==3.3.0
# via
# cliff
# python-novaclient
# python-openstackclient
toml==0.10.2
- # via
- # -r requirements.in
- # pytest
- # tox
+ # via teuthology (pyproject.toml)
tomli==1.2.1
# via pep517
-tox==3.24.1
- # via -r requirements.in
urllib3==1.26.6
# via
# botocore
# requests
# sentry-sdk
-virtualenv==20.7.0
- # via tox
wcwidth==0.2.5
# via
# cmd2
wrapt==1.12.1
# via debtcollector
xmltodict==0.12.0
- # via -r requirements.in
+ # via teuthology (pyproject.toml)
zope-event==4.5.0
# via gevent
zope-interface==5.4.0
--- /dev/null
+[metadata]
+name = teuthology
+version = attr: teuthology.__version__
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+url = https://github.com/ceph/teuthology
+author = Red Hat, Inc.
+license = MIT
+license_file = LICENSE
+classifiers =
+ Intended Audience :: Developers
+ License :: OSI Approved :: MIT License
+ Natural Language :: English
+ Operating System :: POSIX :: Linux
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Programming Language :: Python :: Implementation :: CPython
+ Topic :: Software Development :: Quality Assurance
+ Topic :: Software Development :: Testing
+ Topic :: System :: Distributed Computing
+ Topic :: System :: Filesystems
+description_content_type = text/x-rst; charset=UTF-8
+description_file = README.rst
+keywords = teuthology, test, ceph, cluster
+summary = Ceph test framework
+
+[options]
+packages = find:
+install_requires =
+ PyYAML
+ ansible>=2.8,<2.10
+ apache-libcloud
+ argparse>=1.2.1
+ backports.ssl-match-hostname
+ beanstalkc3>=0.4.0
+ boto>=2.0b4
+ boto3
+ configobj
+ configparser
+ cryptography>=2.7
+ docopt
+ gevent
+ httplib2
+ humanfriendly
+ ipy
+ ndg-httpsclient
+ netaddr
+ paramiko
+ pexpect
+ pip-tools
+ prettytable
+ psutil>=2.1.0
+ pyasn1
+ pynacl>=1.5.0
+ pyopenssl>=0.13
+ python-dateutil
+ python-novaclient
+ python-openstackclient
+ requests>2.13.0
+ sentry-sdk
+ six>=1.9
+ toml
+ xmltodict
+python_requires = >=3.6
+
+[options.entry_points]
+console_scripts =
+ teuthology = scripts.run:main
+ teuthology-openstack = scripts.openstack:main
+ teuthology-nuke = scripts.nuke:main
+ teuthology-suite = scripts.suite:main
+ teuthology-ls = scripts.ls:main
+ teuthology-worker = scripts.worker:main
+ teuthology-lock = scripts.lock:main
+ teuthology-schedule = scripts.schedule:main
+ teuthology-updatekeys = scripts.updatekeys:main
+ teuthology-update-inventory = scripts.update_inventory:main
+ teuthology-results = scripts.results:main
+ teuthology-report = scripts.report:main
+ teuthology-kill = scripts.kill:main
+ teuthology-queue = scripts.queue:main
+ teuthology-prune-logs = scripts.prune_logs:main
+ teuthology-describe = scripts.describe:main
+ teuthology-reimage = scripts.reimage:main
+ teuthology-dispatcher = scripts.dispatcher:main
+ teuthology-wait = scripts.wait:main
+
+[options.extras_require]
+manhole =
+ manhole
+rocketchat =
+ rocket-python>=1.2.15
+sentry =
+ sentry-sdk
+test =
+ PyJWT
+ boto>=2.0b4
+ boto3
+ cryptography>=2.7
+ ipy
+ mock
+ pip-tools
+ pytest
+ toml
+ tox
+ xmltodict
+
+[options.package_data]
+teuthology.openstack =
+ archive-key
+ archive-key.pub
+ openstack-centos-6.5-user-data.txt
+ openstack-centos-7.0-user-data.txt
+ openstack-centos-7.1-user-data.txt
+ openstack-centos-7.2-user-data.txt
+ openstack-debian-8.0-user-data.txt
+ openstack-opensuse-42.1-user-data.txt
+ openstack-teuthology.cron
+ openstack-teuthology.init
+ openstack-ubuntu-12.04-user-data.txt
+ openstack-ubuntu-14.04-user-data.txt
+ openstack-user-data.txt
+ openstack.yaml
+ setup-openstack.sh
+teuthology.task.install =
+ adjust-ulimits
+ daemon-helper
+teuthology.task.internal =
+ edit_sudoers.sh
+++ /dev/null
-from setuptools import setup, find_packages
-import re
-
-module_file = open("teuthology/__init__.py").read()
-metadata = dict(re.findall(r"__([a-z]+)__\s*=\s*['\"]([^'\"]*)['\"]", module_file))
-long_description = open('README.rst').read()
-
-setup(
- name='teuthology',
- version=metadata['version'],
- packages=find_packages(),
- package_data={
- 'teuthology.task': ['adjust-ulimits', 'edit_sudoers.sh', 'daemon-helper'],
- 'teuthology.task': ['adjust-ulimits', 'edit_sudoers.sh', 'daemon-helper'],
- 'teuthology.openstack': [
- 'archive-key',
- 'archive-key.pub',
- 'openstack-centos-6.5-user-data.txt',
- 'openstack-centos-7.0-user-data.txt',
- 'openstack-centos-7.1-user-data.txt',
- 'openstack-centos-7.2-user-data.txt',
- 'openstack-debian-8.0-user-data.txt',
- 'openstack-opensuse-42.1-user-data.txt',
- 'openstack-teuthology.cron',
- 'openstack-teuthology.init',
- 'openstack-ubuntu-12.04-user-data.txt',
- 'openstack-ubuntu-14.04-user-data.txt',
- 'openstack-user-data.txt',
- 'openstack.yaml',
- 'setup-openstack.sh'
- ],
- },
- author='Inktank Storage, Inc.',
- author_email='ceph-qa@ceph.com',
- description='Ceph test framework',
- license='MIT',
- keywords='teuthology test ceph cluster',
- url='https://github.com/ceph/teuthology',
- long_description=long_description,
- classifiers=[
- 'Intended Audience :: Developers',
- 'License :: OSI Approved :: MIT License',
- 'Natural Language :: English',
- 'Operating System :: POSIX :: Linux',
- 'Programming Language :: Python :: 3.6',
- 'Topic :: Software Development :: Quality Assurance',
- 'Topic :: Software Development :: Testing',
- 'Topic :: System :: Distributed Computing',
- 'Topic :: System :: Filesystems',
- ],
- install_requires=['apache-libcloud',
- 'gevent',
- 'PyYAML',
- 'argparse >= 1.2.1',
- 'configobj',
- 'six >= 1.9', # python-openstackclient won't work properly with less
- 'pexpect',
- 'docopt',
- 'netaddr', # teuthology/misc.py
- # only used by orchestra, but we monkey-patch it in
- # teuthology/__init__.py
- 'paramiko',
- 'psutil >= 2.1.0',
- 'configparser',
- 'ansible>=2.0',
- 'prettytable',
- 'rocket-python >= 1.2.15',
- 'manhole',
- 'humanfriendly',
- ],
- extras_require = {
- 'orchestra': [
- # For apache-libcloud when using python < 2.7.9
- 'backports.ssl_match_hostname',
- 'beanstalkc3 >= 0.4.0',
- 'httplib2',
- 'ndg-httpsclient', # for requests, urllib3
- 'pyasn1', # for requests, urllib3
- 'pyopenssl>=0.13', # for requests, urllib3
- 'python-dateutil',
- # python-novaclient is specified here, even though it is
- # redundant, because python-openstackclient requires
- # Babel, and installs 2.3.3, which is forbidden by
- # python-novaclient 4.0.0
- 'python-novaclient',
- 'python-openstackclient',
- # with openstacklient >= 2.1.0, neutronclient no longer is
- # a dependency but we need it anyway.
- 'python-neutronclient',
- 'requests != 2.13.0',
- 'sentry-sdk',
- ],
- 'test': [
- 'boto >= 2.0b4', # for qa/tasks/radosgw_*.py
- 'cryptography >= 2.7', # for qa/tasks/mgr/dashboard/test_rgw.py
- 'nose', # for qa/tasks/rgw_multisite_tests.py',
- 'pip-tools',
- 'pytest', # for tox.ini
- 'requests', # for qa/tasks/mgr/dashboard/helper.py
- 'tox',
- # For bucket notification testing in multisite
- 'xmltodict',
- 'boto3',
- 'PyJWT', # for qa/tasks/mgr/dashboard/test_auth.py
- 'ipy', # for qa/tasks/cephfs/mount.py
- 'toml', # for qa/tasks/cephadm.py
- ]
- },
-
-
- # to find the code associated with entry point
- # A.B:foo first cd into directory A, open file B
- # and find sub foo
- entry_points={
- 'console_scripts': [
- 'teuthology = scripts.run:main',
- 'teuthology-openstack = scripts.openstack:main',
- 'teuthology-nuke = scripts.nuke:main',
- 'teuthology-suite = scripts.suite:main',
- 'teuthology-ls = scripts.ls:main',
- 'teuthology-worker = scripts.worker:main',
- 'teuthology-lock = scripts.lock:main',
- 'teuthology-schedule = scripts.schedule:main',
- 'teuthology-updatekeys = scripts.updatekeys:main',
- 'teuthology-update-inventory = scripts.update_inventory:main',
- 'teuthology-results = scripts.results:main',
- 'teuthology-report = scripts.report:main',
- 'teuthology-kill = scripts.kill:main',
- 'teuthology-queue = scripts.queue:main',
- 'teuthology-prune-logs = scripts.prune_logs:main',
- 'teuthology-describe = scripts.describe:main',
- 'teuthology-reimage = scripts.reimage:main',
- 'teuthology-dispatcher = scripts.dispatcher:main',
- 'teuthology-wait = scripts.wait:main',
- ],
- },
-
- )
#!/bin/bash
-pip-compile $@ requirements.in
-sed -i'' -e '/^-e / d' -e 's/-r requirements.in/teuthology/g' requirements.txt
\ No newline at end of file
+pip-compile $@ pyproject.toml