teuthology 1.2.0__tar.gz → 1.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- teuthology-1.2.2/.github/CODEOWNERS +1 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/.github/workflows/ci.yml +0 -5
- {teuthology-1.2.0 → teuthology-1.2.2}/.github/workflows/dependencies.yml +4 -5
- {teuthology-1.2.0 → teuthology-1.2.2}/.github/workflows/dev_container.yml +15 -10
- teuthology-1.2.2/.github/workflows/integration.yml +33 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/PKG-INFO +7 -6
- teuthology-1.2.2/bootstrap +159 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/containers/teuthology-dev/.teuthology.yaml +5 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/containers/teuthology-dev/Dockerfile +3 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/containers/teuthology-dev/containerized_node.yaml +0 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/LAB_SETUP.rst +1 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/docker-compose.yml +2 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/teuthology/Dockerfile +2 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/laptop/README.md +41 -20
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/laptop/targets.sql +2 -3
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/requirements.txt +2 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/siteconfig.rst +3 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/requirements.txt +8 -6
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/node_cleanup.py +18 -2
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/suite.py +2 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/setup.cfg +6 -5
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/__init__.py +0 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/config.py +28 -7
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/dispatcher/supervisor.py +9 -6
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/lock/cli.py +4 -2
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/lock/ops.py +10 -9
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/lock/query.py +28 -4
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/lock/util.py +1 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/misc.py +13 -58
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/__init__.py +202 -176
- teuthology-1.2.2/teuthology/openstack/openstack-centos-9.stream-user-data.txt +16 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/setup-openstack.sh +52 -27
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/connection.py +3 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/daemon/cephadmunit.py +2 -2
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/opsys.py +15 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/remote.py +54 -2
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/run.py +8 -2
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/test_remote.py +37 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/downburst.py +84 -43
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/fog.py +2 -2
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/repo_utils.py +3 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/run.py +1 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/scrape.py +5 -2
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/merge.py +3 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/run.py +51 -37
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/test/test_run_.py +259 -17
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/util.py +2 -2
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/install/packages.yaml +11 -9
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/install/rpm.py +8 -16
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/internal/__init__.py +2 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/internal/syslog.py +17 -13
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/kernel.py +1 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_misc.py +7 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_run.py +42 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_scrape.py +39 -1
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_vps_os_vers_parameter_checking.py +4 -4
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology.egg-info/PKG-INFO +7 -6
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology.egg-info/SOURCES.txt +2 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology.egg-info/requires.txt +3 -3
- teuthology-1.2.0/.github/workflows/integration.yml +0 -12
- teuthology-1.2.0/bootstrap +0 -251
- {teuthology-1.2.0 → teuthology-1.2.2}/.coveragerc +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/.dockerignore +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/.gitignore +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/.gitlab-ci.yml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/.readthedocs.yml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/.travis.yml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/LICENSE +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/MANIFEST.in +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/README.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/ansible.cfg +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/beanstalk/alpine/Dockerfile +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/build_qemu_image.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/containers/teuthology-dev/teuthology.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/COMPONENTS.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/ChangeLog.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/INSTALL.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/Makefile +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/README.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_static/create_nodes.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_static/nginx_paddles +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_static/nginx_pulpito +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_static/nginx_test_logs +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_static/worker_start.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Book.eot +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Book.svg +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Book.ttf +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Book.woff +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Medium.eot +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Medium.svg +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Medium.ttf +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Medium.woff +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/static/nature.css_t +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/_themes/ceph/theme.conf +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/cephlab.png +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/cephlab.svg +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/list.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-describe.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-dispatcher.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-kill.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-lock.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-ls.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-openstack.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-prune-logs.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-queue.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-reimage.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-report.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-results.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-schedule.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-suite.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-update-inventory.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-updatekeys.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-wait.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology-worker.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/commands/teuthology.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/conf.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/detailed_test_config.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/README.md +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/db/01-init.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/start.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/testnode/Dockerfile +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/testnode/testnode_start.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/testnode/testnode_stop.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/testnode/testnode_sudoers +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/teuthology/.teuthology.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/teuthology/containerized_node.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/docker-compose/teuthology/teuthology.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/downburst_vms.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/exporter.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/fragment_merging.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/index.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/intro_testers.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/laptop/default-pool.xml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/laptop/front.xml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/laptop/hosts +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/laptop/ssh_config +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/laptop/teuthology.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/libcloud_backend.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/docs/openstack_backend.rst +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/examples/3node_ceph.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/examples/3node_rgw.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/examples/parallel_example.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/hammer.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/openstack-delegate.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/pyproject.toml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/pytest.ini +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/requirements.yml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/describe.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/dispatcher.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/exporter.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/kill.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/lock.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/ls.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/openstack.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/prune_logs.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/queue.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/reimage.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/report.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/results.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/run.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/schedule.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/supervisor.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/script.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_dispatcher_.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_exporter_.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_lock.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_ls.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_prune_logs.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_report.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_results.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_run.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_schedule.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_suite.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_supervisor_.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/test/test_updatekeys.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/update_inventory.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/updatekeys.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/scripts/wait.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/systemd/teuthology-dispatcher@.service +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/systemd/teuthology-exporter.service +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/beanstalk.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/ceph.conf.template +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/contextutil.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/describe_tests.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/dispatcher/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/dispatcher/test/test_dispatcher.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/dispatcher/test/test_reimage_error_mark_machine_down.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/dispatcher/test/test_supervisor.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/exceptions.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/exit.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/exporter.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/job_status.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/kill.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/lock/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/lock/test/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/lock/test/test_lock.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/ls.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/nuke/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/archive-key +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/archive-key.pub +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/bootstrap-teuthology.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-basic.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-buildpackages.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-6.5-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-7.0-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-7.1-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-7.2-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-7.3-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-debian-7.0-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-debian-8.0-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-15.0-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-15.1-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-42.1-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-42.2-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-42.3-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-12.1-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-12.2-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-12.3-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-15.0-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-15.1-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-teuthology.cron +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-teuthology.init +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-ubuntu-12.04-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-ubuntu-14.04-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-ubuntu-16.04-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/openstack-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/archive-on-error.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/noop.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/openstack-integration.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/resources_hint.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/resources_hint_no_cinder.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/stop_worker.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/suites/noop/+ +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/suites/noop/noop.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/suites/nuke/+ +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/test_config.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/test_openstack.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/openstack/test/user-data-test1.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/cluster.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/console.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/daemon/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/daemon/group.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/daemon/state.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/daemon/systemd.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/monkey.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/files/daemon-systemdstate-pid-ps-ef.output +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/integration/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/integration/test_integration.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/test_cluster.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/test_connection.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/test_console.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/test_opsys.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/test_run.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/test_systemd.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/orchestra/test/util.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/packaging.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/parallel.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/cloud/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/cloud/base.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/cloud/openstack.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_base.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_cloud_init.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_cloud_util.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_openstack.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_openstack_userdata_conf.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/cloud/util.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/openstack.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/pelagos.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/test/test_downburst.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/test/test_fog.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/test/test_init_provision.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/provision/test/test_pelagos.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/prune.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/reimage.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/report.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/results.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/run_tasks.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/safepath.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/schedule.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/build_matrix.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/fragment-merge.lua +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/matrix.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/placeholder.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/test/conftest.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/test/suites/noop/noop.yaml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/test/test_build_matrix.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/test/test_init.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/test/test_matrix.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/test/test_merge.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/test/test_placeholder.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/suite/test/test_util.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/ansible.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/args.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/background_exec.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/Makefile +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-6.5-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-7.0-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-7.1-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-7.2-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-7.3-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/common.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/debian-8.0-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/make-deb.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/make-rpm.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/opensuse-15.0-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/opensuse-42.1-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/opensuse-42.2-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/opensuse-42.3-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/sle-12.1-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/sle-12.2-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/sle-12.3-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/sle-15.0-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/ubuntu-12.04-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/ubuntu-14.04-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/ubuntu-16.04-user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages/user-data.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/buildpackages.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/ceph_ansible.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/cephmetrics.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/clock.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/common_fs_utils.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/console_log.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/dump_ctx.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/exec.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/full_sequential.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/full_sequential_finally.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/hadoop.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/install/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/install/bin/adjust-ulimits +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/install/bin/daemon-helper +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/install/bin/stdin-killer +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/install/deb.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/install/redhat.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/install/util.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/interactive.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/internal/check_lock.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/internal/edit_sudoers.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/internal/git_ignore_ssl.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/internal/lock_machines.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/internal/redhat.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/internal/vm_setup.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/iscsi.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/knfsd.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/localdir.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/lockfile.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/loop.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/mpi.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/nfs.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/nop.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/parallel.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/parallel_example.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/pcp.j2 +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/pcp.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/pexec.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/print.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/proc_thrasher.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/selinux.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/sequential.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/sleep.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/ssh_keys.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/tasktest.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/tests/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/tests/test_fetch_coredumps.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/tests/test_locking.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/tests/test_run.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/task/timer.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/templates/email-sleep-before-teardown.jinja2 +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/templates/rocketchat-sleep-before-teardown.jinja2 +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/fake_archive.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/fake_fs.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/integration/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/integration/test_suite.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/task/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/task/test_ansible.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/task/test_ceph_ansible.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/task/test_console_log.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/task/test_install.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/task/test_internal.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/task/test_kernel.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/task/test_pcp.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/task/test_selinux.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_config.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_contextutil.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_describe_tests.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_email_sleep_before_teardown.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_exit.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_get_distro.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_get_distro_version.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_get_multi_machine_types.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_imports.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_job_status.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_kill.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_ls.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_packaging.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_parallel.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_repo_utils.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_report.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_results.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_safepath.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_schedule.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/test/test_timer.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/timer.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/__init__.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/compat.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/flock.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/loggerfile.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/scanner.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/sentry.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/test/files/test_unit_test.xml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/test/files/test_valgrind.xml +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/test/test_scanner.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/test/test_time.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology/util/time.py +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology.egg-info/dependency_links.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology.egg-info/entry_points.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/teuthology.egg-info/top_level.txt +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/tox.ini +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/update-requirements.sh +0 -0
- {teuthology-1.2.0 → teuthology-1.2.2}/watch-suite.sh +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
* @ceph/teuthology
|
@@ -13,8 +13,6 @@ jobs:
|
|
13
13
|
strategy:
|
14
14
|
matrix:
|
15
15
|
include:
|
16
|
-
- os: ubuntu-20.04
|
17
|
-
python: "3.10"
|
18
16
|
- os: ubuntu-22.04
|
19
17
|
python: "3.10"
|
20
18
|
- os: ubuntu-22.04
|
@@ -23,9 +21,6 @@ jobs:
|
|
23
21
|
python: "3.12"
|
24
22
|
steps:
|
25
23
|
- uses: actions/checkout@v4
|
26
|
-
- name: Add deadsnakes PPA
|
27
|
-
if: matrix.os == 'ubuntu-20.04'
|
28
|
-
run: sudo add-apt-repository --yes ppa:deadsnakes/ppa
|
29
24
|
- name: Setup Python
|
30
25
|
uses: actions/setup-python@v5
|
31
26
|
with:
|
@@ -13,16 +13,11 @@ jobs:
|
|
13
13
|
strategy:
|
14
14
|
matrix:
|
15
15
|
include:
|
16
|
-
- os: ubuntu-20.04
|
17
|
-
python: "3.10"
|
18
16
|
- os: ubuntu-22.04
|
19
17
|
python: "3.10"
|
20
18
|
- os: ubuntu-22.04
|
21
19
|
python: "3.11"
|
22
20
|
steps:
|
23
|
-
- name: Add deadsnakes PPA
|
24
|
-
if: matrix.os == 'ubuntu-20.04'
|
25
|
-
run: sudo add-apt-repository --yes ppa:deadsnakes/ppa
|
26
21
|
- name: Set up Python
|
27
22
|
uses: actions/setup-python@v5
|
28
23
|
with:
|
@@ -39,6 +34,10 @@ jobs:
|
|
39
34
|
cd ./virtualenv/lib/python*
|
40
35
|
touch no-global-site-packages.txt
|
41
36
|
working-directory: ./teuthology
|
37
|
+
- name: Refresh system repos
|
38
|
+
run: |
|
39
|
+
sudo apt update -y
|
40
|
+
sudo apt upgrade -y
|
42
41
|
- name: Initial bootstrap
|
43
42
|
run: ./bootstrap install
|
44
43
|
working-directory: ./teuthology
|
@@ -2,36 +2,41 @@
|
|
2
2
|
name: dev_container
|
3
3
|
on:
|
4
4
|
push:
|
5
|
+
branches:
|
6
|
+
- "main"
|
7
|
+
pull_request:
|
5
8
|
branches:
|
6
9
|
- main
|
7
10
|
workflow_dispatch:
|
8
11
|
|
9
12
|
jobs:
|
10
13
|
docker:
|
11
|
-
runs-on:
|
14
|
+
runs-on: ${{ matrix.os }}
|
15
|
+
strategy:
|
16
|
+
matrix:
|
17
|
+
include:
|
18
|
+
- os: ubuntu-24.04
|
19
|
+
python: "3.12"
|
20
|
+
- os: ubuntu-24.04-arm
|
21
|
+
python: "3.12"
|
12
22
|
steps:
|
13
23
|
- name: Checkout
|
14
24
|
uses: actions/checkout@v4
|
15
|
-
- name: Set up QEMU
|
16
|
-
uses: docker/setup-qemu-action@v3
|
17
|
-
- name: Set up Docker Buildx
|
18
|
-
uses: docker/setup-buildx-action@v3
|
19
25
|
- name: Login to Quay.io
|
20
|
-
|
26
|
+
if: github.event_name == 'push' && github.ref_name == 'main'
|
27
|
+
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
|
21
28
|
with:
|
22
29
|
registry: quay.io
|
23
30
|
username: ${{ secrets.QUAY_USERNAME }}
|
24
31
|
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
|
25
32
|
- name: Build and push
|
26
|
-
uses: docker/build-push-action@
|
33
|
+
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4
|
27
34
|
env:
|
28
35
|
QUAY_URI: quay.io/ceph-infra/teuthology-dev
|
29
36
|
QUAY_TAG: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
|
30
37
|
with:
|
31
38
|
context: .
|
32
39
|
file: containers/teuthology-dev/Dockerfile
|
33
|
-
|
34
|
-
push: true
|
40
|
+
push: ${{ github.event_name == 'push' && github.ref_name == 'main' }}
|
35
41
|
tags: ${{ env.QUAY_URI }}:${{ env.QUAY_TAG }}
|
36
42
|
outputs: type=image,name=target
|
37
|
-
|
@@ -0,0 +1,33 @@
|
|
1
|
+
name: integration
|
2
|
+
on:
|
3
|
+
pull_request:
|
4
|
+
workflow_dispatch:
|
5
|
+
jobs:
|
6
|
+
test:
|
7
|
+
runs-on: ubuntu-24.04
|
8
|
+
steps:
|
9
|
+
- uses: actions/checkout@v4
|
10
|
+
- name: Make archive directory
|
11
|
+
run: mkdir /tmp/archive_dir
|
12
|
+
- name: Test using docker-compose
|
13
|
+
run: ./start.sh
|
14
|
+
working-directory: ./docs/docker-compose
|
15
|
+
- name: Rename Directory
|
16
|
+
# Replace ":" with "_" everywhere in directory path.
|
17
|
+
# This needs to be done because GA does not support ":" colon character in artifacts (like in /root-2025-03-06_18:47:26-teuthology:no-ceph-main-distro-default-testnode).
|
18
|
+
# Invalid characters include: Double quote ", Colon :, Less than <, Greater than >, Vertical bar |, Asterisk *, Question mark ?, Carriage return \r, Line feed \n
|
19
|
+
if: always()
|
20
|
+
run: |
|
21
|
+
for DIR in /tmp/archive_dir/root-*; do
|
22
|
+
SAFE_DIR="${DIR//:/_}" # Replace in '/tmp/archive_dir/root-2025-03-06_18:47:26-teuthology:no-ceph-main-distro-default-testnode'
|
23
|
+
if [ "$DIR" != "$SAFE_DIR" ]; then
|
24
|
+
mv "$DIR" "$SAFE_DIR"
|
25
|
+
fi
|
26
|
+
done
|
27
|
+
- name: Upload teuthology archive logs
|
28
|
+
uses: actions/upload-artifact@v4
|
29
|
+
if: always()
|
30
|
+
with:
|
31
|
+
name: teuthology-logs
|
32
|
+
path: |
|
33
|
+
/tmp/archive_dir/*
|
@@ -1,9 +1,9 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: teuthology
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.2
|
4
4
|
Summary: Ceph test framework
|
5
5
|
Home-page: https://github.com/ceph/teuthology
|
6
|
-
Author:
|
6
|
+
Author: Red Hat, Inc.
|
7
7
|
License: MIT
|
8
8
|
Keywords: teuthology,test,ceph,cluster
|
9
9
|
Classifier: Intended Audience :: Developers
|
@@ -24,21 +24,21 @@ Requires-Python: >=3.10
|
|
24
24
|
Description-Content-Type: text/x-rst
|
25
25
|
License-File: LICENSE
|
26
26
|
Requires-Dist: PyYAML
|
27
|
-
Requires-Dist: ansible-core==2.
|
27
|
+
Requires-Dist: ansible-core==2.17.7
|
28
28
|
Requires-Dist: apache-libcloud
|
29
29
|
Requires-Dist: backports.ssl-match-hostname
|
30
30
|
Requires-Dist: beanstalkc3>=0.4.0
|
31
31
|
Requires-Dist: configobj
|
32
32
|
Requires-Dist: configparser
|
33
|
-
Requires-Dist: cryptography==41.0.7
|
34
33
|
Requires-Dist: docopt
|
35
|
-
Requires-Dist: gevent
|
34
|
+
Requires-Dist: gevent<25
|
36
35
|
Requires-Dist: httplib2
|
37
36
|
Requires-Dist: humanfriendly
|
38
37
|
Requires-Dist: lupa
|
39
38
|
Requires-Dist: lxml
|
40
39
|
Requires-Dist: ndg-httpsclient
|
41
40
|
Requires-Dist: netaddr
|
41
|
+
Requires-Dist: openstacksdk
|
42
42
|
Requires-Dist: paramiko
|
43
43
|
Requires-Dist: pexpect
|
44
44
|
Requires-Dist: pip-tools
|
@@ -75,6 +75,7 @@ Requires-Dist: xmltodict; extra == "test"
|
|
75
75
|
Provides-Extra: openstack
|
76
76
|
Requires-Dist: python-openstackclient; extra == "openstack"
|
77
77
|
Requires-Dist: python-novaclient; extra == "openstack"
|
78
|
+
Dynamic: license-file
|
78
79
|
|
79
80
|
===================================================
|
80
81
|
`Teuthology` -- The Ceph integration test framework
|
@@ -0,0 +1,159 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
if [ $# -eq 0 ]; then
|
4
|
+
install=false
|
5
|
+
else
|
6
|
+
if [ "$1" = "install" ]; then
|
7
|
+
install=true
|
8
|
+
else
|
9
|
+
echo "Invalid command, supported commands are: 'install'"
|
10
|
+
exit 1
|
11
|
+
fi
|
12
|
+
fi
|
13
|
+
|
14
|
+
if [[ "$PYTHON" =~ "python2" ]]; then
|
15
|
+
echo "python2 is not supported." >&2
|
16
|
+
exit 1
|
17
|
+
fi
|
18
|
+
|
19
|
+
# Use the newest version we find
|
20
|
+
if [ -z "$PYTHON" ]; then
|
21
|
+
for i in 12 11 10; do
|
22
|
+
command -v "python3.$i" && PYTHON="python3.$i" &>/dev/null && break
|
23
|
+
done
|
24
|
+
fi
|
25
|
+
if [ -z "$PYTHON" ]; then
|
26
|
+
# This would be bizarre, but I suppose possible
|
27
|
+
PYTHON=${PYTHON:-"python3"}
|
28
|
+
fi
|
29
|
+
echo "Using python: $PYTHON"
|
30
|
+
|
31
|
+
case "$(uname -s)" in
|
32
|
+
Linux)
|
33
|
+
if command -v lsb_release; then
|
34
|
+
OS=$(lsb_release --id --short)
|
35
|
+
else
|
36
|
+
. /etc/os-release
|
37
|
+
OS=$(echo $NAME | tr -d ' ')
|
38
|
+
fi
|
39
|
+
# rpm/dnf is the default, to reduce repetition in the case statement
|
40
|
+
has_pkg="rpm -q --whatprovides"
|
41
|
+
install_pkg="sudo dnf install -y"
|
42
|
+
case "$OS" in
|
43
|
+
Ubuntu|Debian|LinuxMint)
|
44
|
+
deps=(qemu-utils python3-dev libssl-dev python3-pip python3-wheel python3-venv libev-dev libvirt-dev libffi-dev libyaml-dev build-essential jq curl)
|
45
|
+
has_pkg="dpkg -s"
|
46
|
+
install_pkg="sudo apt install -y"
|
47
|
+
;;
|
48
|
+
RedHatEnterpriseWorkstation|RedHatEnterpriseServer|RedHatEnterprise|CentOS)
|
49
|
+
deps=(python39-pip python39-devel mariadb-devel libev-devel libvirt-devel libffi-devel)
|
50
|
+
;;
|
51
|
+
CentOSStream)
|
52
|
+
PYTHON=python3.12
|
53
|
+
deps=($PYTHON-pip $PYTHON-devel)
|
54
|
+
;;
|
55
|
+
AlmaLinux|RockyLinux)
|
56
|
+
PYTHON=python3.12
|
57
|
+
deps=($PYTHON-pip $PYTHON-devel libev-devel libvirt-devel libffi-devel)
|
58
|
+
;;
|
59
|
+
Fedora|FedoraLinux)
|
60
|
+
deps=($PYTHON-pip $PYTHON-devel libev-devel libvirt-devel libffi-devel)
|
61
|
+
;;
|
62
|
+
"openSUSE project"|"SUSE LINUX"|"openSUSE"|"openSUSELeap"|"openSUSETumbleweed")
|
63
|
+
PYTHON=python3.12
|
64
|
+
deps=(python312-pip python312-devel python312 libev-devel libvirt-devel libffi-devel)
|
65
|
+
install_pkg="sudo zypper install"
|
66
|
+
;;
|
67
|
+
esac
|
68
|
+
;;
|
69
|
+
|
70
|
+
Darwin)
|
71
|
+
deps="python libvirt libev libffi"
|
72
|
+
has_pkg="brew list"
|
73
|
+
install_pkg="brew install"
|
74
|
+
;;
|
75
|
+
esac
|
76
|
+
for package in ${deps[@]}; do
|
77
|
+
if ! $has_pkg $package &>/dev/null; then
|
78
|
+
# add a space after old values
|
79
|
+
missing="${missing:+$missing }$package"
|
80
|
+
echo missing=${missing}
|
81
|
+
fi
|
82
|
+
done
|
83
|
+
if [ -n "$missing" ]; then
|
84
|
+
echo "$0: missing required packages:" 1>&2
|
85
|
+
echo "$missing"
|
86
|
+
if [ "$install" = true ]; then
|
87
|
+
echo "Installing missing packages..."
|
88
|
+
$install_pkg $missing
|
89
|
+
else
|
90
|
+
echo "Please install missing packages or run './bootstrap install'"
|
91
|
+
echo "$install_pkg $missing"
|
92
|
+
exit 1
|
93
|
+
fi
|
94
|
+
fi
|
95
|
+
|
96
|
+
PYTHON_BIN=$(command -v $PYTHON)
|
97
|
+
if [ -z $PYTHON_BIN -o ! -e $PYTHON_BIN -o ! -x $PYTHON_BIN ]; then
|
98
|
+
echo "Cannot find $PYTHON!"
|
99
|
+
exit 1
|
100
|
+
fi
|
101
|
+
PYTHON_VER_OUT=$($PYTHON_BIN --version)
|
102
|
+
|
103
|
+
VENV=${VENV:-"./virtualenv"}
|
104
|
+
# If the venv was set to use system site-packages, fix that
|
105
|
+
if [ -f "$VENV/pyvenv.cfg" ]; then
|
106
|
+
sed -i'' -e 's/\(include-system-site-packages\s*=\s*\)true/\1false/g' $VENV/pyvenv.cfg
|
107
|
+
fi
|
108
|
+
|
109
|
+
# Attempt to force a UTF-8 locale without being specific to English
|
110
|
+
export LANG=${LANG:-C.UTF-8}
|
111
|
+
(echo $LANG | grep -qi utf-8) || export LC_ALL=$LANG.UTF-8
|
112
|
+
|
113
|
+
if [ -z "$NO_CLOBBER" ] && \
|
114
|
+
[ ! -e "$VENV/bin/pip" -o ! -e "$VENV/bin/$PYTHON" ] || \
|
115
|
+
[ "${PYTHON_VER_OUT}" != "$($VENV/bin/$PYTHON --version)" ] \
|
116
|
+
; then
|
117
|
+
echo "Deleting existing virtual environment"
|
118
|
+
rm -rf virtualenv
|
119
|
+
fi
|
120
|
+
|
121
|
+
if [ -z "$NO_CLOBBER" ] || [ ! -e $VENV ]; then
|
122
|
+
echo "Creating new venv at $VENV"
|
123
|
+
$PYTHON_BIN -m venv $VENV
|
124
|
+
fi
|
125
|
+
|
126
|
+
PY_MAJOR=$($VENV/bin/python -c "import sys; print(sys.version_info[0])")
|
127
|
+
PY_MINOR=$($VENV/bin/python -c "import sys; print(sys.version_info[1])")
|
128
|
+
|
129
|
+
# Python version check
|
130
|
+
if [[ "$PY_MAJOR" -ne 3 || "$PY_MINOR" -lt 10 ]]; then
|
131
|
+
echo "Python version should be 3.10 or higher, found $PY_MAJOR.$PY_MINOR"
|
132
|
+
exit 1
|
133
|
+
fi
|
134
|
+
|
135
|
+
$VENV/bin/pip install packaging
|
136
|
+
|
137
|
+
if [ -f "$VENV/bin/ansible" ]; then
|
138
|
+
uninstall_ansible=$($VENV/bin/python3 -c "import ansible; from packaging.version import parse; print(parse(ansible.__version__) < parse('2.10.0'))")
|
139
|
+
if [ "$uninstall_ansible" = "True" ]; then
|
140
|
+
$VENV/bin/pip uninstall -y ansible
|
141
|
+
fi
|
142
|
+
fi
|
143
|
+
|
144
|
+
# First, upgrade pip
|
145
|
+
$VENV/bin/pip install --upgrade pip
|
146
|
+
|
147
|
+
# See https://github.com/pypa/pip/issues/8559
|
148
|
+
$VENV/bin/pip install -r requirements.txt --use-pep517
|
149
|
+
|
150
|
+
# By default, install teuthology in editable mode
|
151
|
+
$VENV/bin/pip install ${PIP_INSTALL_FLAGS:---editable '.[test]'}
|
152
|
+
|
153
|
+
# Check to make sure requirements are met
|
154
|
+
$VENV/bin/pip check
|
155
|
+
|
156
|
+
# Install ansible collections
|
157
|
+
$VENV/bin/ansible-galaxy install -r requirements.yml
|
158
|
+
|
159
|
+
echo "Bootstrap completed successfully!!!"
|
@@ -11,6 +11,8 @@ RUN apt-get update && \
|
|
11
11
|
python3-pip \
|
12
12
|
python3-venv \
|
13
13
|
vim \
|
14
|
+
jq \
|
15
|
+
curl \
|
14
16
|
libev-dev \
|
15
17
|
libvirt-dev \
|
16
18
|
libffi-dev \
|
@@ -29,6 +31,7 @@ RUN \
|
|
29
31
|
PIP_INSTALL_FLAGS="-r requirements.txt" ./bootstrap
|
30
32
|
COPY . /teuthology
|
31
33
|
RUN \
|
34
|
+
(git config -f ./.git/config --unset 'http.https://github.com/.extraheader' || true ) && \
|
32
35
|
./bootstrap
|
33
36
|
COPY containers/teuthology-dev/containerized_node.yaml /teuthology
|
34
37
|
COPY containers/teuthology-dev/.teuthology.yaml /root
|
@@ -18,7 +18,7 @@ We're currently running both paddles and pulpito on the same node. We have a pro
|
|
18
18
|
|
19
19
|
Do the following as root or as another user with sudo access::
|
20
20
|
|
21
|
-
sudo apt-get install git
|
21
|
+
sudo apt-get install git python3-dev python3-virtualenv postgresql postgresql-contrib postgresql-server-dev-all supervisor
|
22
22
|
sudo -u postgres createuser paddles -P
|
23
23
|
sudo -u postgres createdb paddles
|
24
24
|
|
@@ -52,7 +52,7 @@ docker network create paddles
|
|
52
52
|
Start postgres containers in order to use paddles:
|
53
53
|
|
54
54
|
```bash
|
55
|
-
mkdir $HOME/.teuthology/postgres
|
55
|
+
mkdir -p $HOME/.teuthology/postgres
|
56
56
|
docker run -d -p 5432:5432 --network paddles --name paddles-postgres \
|
57
57
|
-e POSTGRES_PASSWORD=secret \
|
58
58
|
-e POSTGRES_USER=paddles \
|
@@ -61,6 +61,10 @@ docker run -d -p 5432:5432 --network paddles --name paddles-postgres \
|
|
61
61
|
-v $HOME/.teuthology/postgres:/var/lib/postgresql/data postgres
|
62
62
|
```
|
63
63
|
|
64
|
+
NOTE. When running container on MacOS X using podman postgres may experience
|
65
|
+
troubles with volume directory binds because of podman machine, thus use regular
|
66
|
+
volumes like `-v paddlesdb:/var/lib/postgresql/data`.
|
67
|
+
|
64
68
|
### Run paddles
|
65
69
|
|
66
70
|
Checkout paddles and build the image:
|
@@ -72,12 +76,16 @@ cd ~/paddles && docker build . --file Dockerfile --tag paddles
|
|
72
76
|
Run the container with previously created network:
|
73
77
|
|
74
78
|
```bash
|
75
|
-
docker run -d --network paddles --name api -p
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
+
docker run -d --network paddles --name api -p 8080:8080 \
|
80
|
+
-e PADDLES_SERVER_HOST=0.0.0.0 \
|
81
|
+
-e PADDLES_SQLALCHEMY_URL=postgresql+psycopg2://paddles:secret@paddles-postgres/paddles \
|
82
|
+
-e PADDLES_JOB_LOG_HREF_TEMPL='http://localhost:8888/{run_name}/{job_id}/teuthology.log' \
|
83
|
+
paddles
|
79
84
|
```
|
80
85
|
|
86
|
+
Note: we provide job log href template here, so the logs can be referenced logs in archive share
|
87
|
+
correctly, for details see below in `Run dispatcher` section.
|
88
|
+
|
81
89
|
### Run pulpito
|
82
90
|
|
83
91
|
Checkout pulpito and build the image:
|
@@ -332,7 +340,21 @@ For further usage nodes should be unlocked with `--unlock` option.
|
|
332
340
|
|
333
341
|
### Run beanstalkd
|
334
342
|
|
335
|
-
|
343
|
+
Build and run beanstalkd container.
|
344
|
+
```bash
|
345
|
+
cd teuthology/beanstalk/alpine &&
|
346
|
+
podman build . --file Dockerfile --tag beanstalkd
|
347
|
+
|
348
|
+
podman run -d --network paddles --name queue -p 11300:11300 beanstalkd
|
349
|
+
```
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
Alternatively, beanstalkd can be installed as a service.
|
354
|
+
|
355
|
+
Note:
|
356
|
+
For openSUSE there is no beanstalkd package as for Ubuntu, so it is needed
|
357
|
+
to add corresponding repo:
|
336
358
|
|
337
359
|
```bash
|
338
360
|
zypper addrepo https://download.opensuse.org/repositories/filesystems:/ceph:/teuthology/openSUSE_Leap_15.2/x86_64/ teuthology && zypper ref
|
@@ -345,21 +367,26 @@ sudo zypper in beanstalkd
|
|
345
367
|
sudo service beanstalkd start
|
346
368
|
```
|
347
369
|
|
348
|
-
### Run
|
370
|
+
### Run dispatcher
|
349
371
|
|
350
|
-
Create
|
372
|
+
Create and share archive directory.
|
351
373
|
|
352
374
|
```bash
|
353
|
-
|
354
|
-
mkdir -p $TEUTH_HOME/www/logs/jobs
|
355
|
-
mkdir -p $TEUTH_HOME/www/logs/workers
|
375
|
+
mkdir -p ~/.teuthology/archive
|
356
376
|
|
357
|
-
|
377
|
+
podman run --name archive -v $HOME/.teuthology/archive:/usr/local/apache2/htdocs/ -d -p 8888:80 httpd:2.4
|
378
|
+
```
|
379
|
+
|
380
|
+
Run teuthology dispatcher against 'vps' machine type.
|
381
|
+
|
382
|
+
```bash
|
383
|
+
mkdir -p ~/.teuthology/dispatcher
|
384
|
+
teuthology-dispatcher -v -a ~/.teuthology/archive -t vps -l ~/.teuthology/dispatcher
|
358
385
|
```
|
359
386
|
|
360
387
|
Schedule a dummy job:
|
361
388
|
```bash
|
362
|
-
teuthology-suite -v --ceph-repo https://github.com/ceph/ceph --suite-repo https://github.com/ceph/ceph --ceph
|
389
|
+
teuthology-suite -v --ceph-repo https://github.com/ceph/ceph --suite-repo https://github.com/ceph/ceph --ceph main --suite dummy -d ubuntu --sha1 35adebe94e8b0a17e7b56379a8bf24e5f7b8ced4 --limit 1 -m vps -t refs/pull/2023/merge
|
363
390
|
```
|
364
391
|
|
365
392
|
## Downburst
|
@@ -396,13 +423,7 @@ sha512sum opensuse-tumbleweed-20200810-cloudimg-amd64.img | cut -d' ' -f1 > open
|
|
396
423
|
run webserver localy:
|
397
424
|
|
398
425
|
```bash
|
399
|
-
|
400
|
-
```
|
401
|
-
|
402
|
-
or
|
403
|
-
|
404
|
-
```bash
|
405
|
-
(cd $TEUTH_HOME/www && python3 -m http.server 8181)
|
426
|
+
podman run --name downburst-discovery -v $HOME/.teuthology/www:/usr/local/apache2/htdocs/ -d -p 8181:80 httpd:2.4
|
406
427
|
```
|
407
428
|
|
408
429
|
```bash
|
@@ -1,9 +1,8 @@
|
|
1
|
-
begin
|
1
|
+
begin;
|
2
2
|
insert into nodes (name, machine_type, is_vm, locked, up) values ('localhost', 'libvirt', false, true, true);
|
3
3
|
insert into nodes (name, machine_type, is_vm, locked, up, mac_address, vm_host_id) values
|
4
4
|
('target-00.local', 'vps', true, false, false, '52:54:00:00:00:00', (select id from nodes where name='localhost')),
|
5
5
|
('target-01.local', 'vps', true, false, false, '52:54:00:00:00:01', (select id from nodes where name='localhost')),
|
6
6
|
('target-02.local', 'vps', true, false, false, '52:54:00:00:00:02', (select id from nodes where name='localhost')),
|
7
7
|
('target-03.local', 'vps', true, false, false, '52:54:00:00:00:03', (select id from nodes where name='localhost'));
|
8
|
-
commit
|
9
|
-
|
8
|
+
commit;
|
@@ -74,6 +74,9 @@ Here is a sample configuration with many of the options set and documented::
|
|
74
74
|
# Where teuthology and ceph-qa-suite repos should be stored locally
|
75
75
|
src_base_path: /home/foo/src
|
76
76
|
|
77
|
+
# Where the teuthology git repo is considered to reside.
|
78
|
+
teuthology_git_url: https://github.com/ceph/teuthology.git
|
79
|
+
|
77
80
|
# Where teuthology path is located: do not clone if present
|
78
81
|
#teuthology_path: .
|
79
82
|
|
@@ -4,7 +4,7 @@
|
|
4
4
|
#
|
5
5
|
# pip-compile --extra=test pyproject.toml
|
6
6
|
#
|
7
|
-
ansible-core==2.
|
7
|
+
ansible-core==2.17.7
|
8
8
|
# via teuthology (pyproject.toml)
|
9
9
|
apache-libcloud==3.8.0
|
10
10
|
# via teuthology (pyproject.toml)
|
@@ -42,7 +42,7 @@ click==8.1.7
|
|
42
42
|
# via pip-tools
|
43
43
|
colorama==0.4.6
|
44
44
|
# via tox
|
45
|
-
configobj==5.0.
|
45
|
+
configobj==5.0.9
|
46
46
|
# via teuthology (pyproject.toml)
|
47
47
|
configparser==6.0.0
|
48
48
|
# via teuthology (pyproject.toml)
|
@@ -63,7 +63,7 @@ filelock==3.13.1
|
|
63
63
|
# via
|
64
64
|
# tox
|
65
65
|
# virtualenv
|
66
|
-
gevent==
|
66
|
+
gevent==24.2.1
|
67
67
|
# via teuthology (pyproject.toml)
|
68
68
|
greenlet==3.0.3
|
69
69
|
# via gevent
|
@@ -77,7 +77,7 @@ iniconfig==2.0.0
|
|
77
77
|
# via pytest
|
78
78
|
ipy==1.1
|
79
79
|
# via teuthology (pyproject.toml)
|
80
|
-
jinja2==3.1.
|
80
|
+
jinja2==3.1.6
|
81
81
|
# via ansible-core
|
82
82
|
jmespath==1.0.1
|
83
83
|
# via
|
@@ -188,7 +188,7 @@ urllib3==1.26.18
|
|
188
188
|
# requests
|
189
189
|
# sentry-sdk
|
190
190
|
# teuthology (pyproject.toml)
|
191
|
-
virtualenv==20.
|
191
|
+
virtualenv==20.26.6
|
192
192
|
# via tox
|
193
193
|
wcwidth==0.2.12
|
194
194
|
# via prettytable
|
@@ -200,7 +200,9 @@ zope-event==5.0
|
|
200
200
|
# via gevent
|
201
201
|
zope-interface==6.1
|
202
202
|
# via gevent
|
203
|
-
|
203
|
+
openstacksdk==4.5.0
|
204
|
+
# via teuthology (pyproject.toml)
|
205
|
+
python-openstackclient>=6.0.0
|
204
206
|
# The following packages are considered to be unsafe in a requirements file:
|
205
207
|
# pip
|
206
208
|
# setuptools
|
@@ -3,14 +3,27 @@ import logging
|
|
3
3
|
import sys
|
4
4
|
|
5
5
|
import teuthology
|
6
|
+
from teuthology.config import config
|
6
7
|
from teuthology.lock import query, ops
|
7
8
|
|
9
|
+
|
8
10
|
def main():
|
9
11
|
args = parse_args(sys.argv[1:])
|
10
12
|
if args.verbose:
|
11
13
|
teuthology.log.setLevel(logging.DEBUG)
|
14
|
+
else:
|
15
|
+
teuthology.log.setLevel(100)
|
12
16
|
log = logging.getLogger(__name__)
|
13
|
-
|
17
|
+
logger = logging.getLogger()
|
18
|
+
for handler in logger.handlers:
|
19
|
+
handler.setFormatter(
|
20
|
+
logging.Formatter('%(message)s')
|
21
|
+
)
|
22
|
+
try:
|
23
|
+
stale = query.find_stale_locks(args.owner)
|
24
|
+
except Exception:
|
25
|
+
log.exception(f"Error while check for stale locks held by {args.owner}")
|
26
|
+
return
|
14
27
|
if not stale:
|
15
28
|
return
|
16
29
|
by_owner = {}
|
@@ -26,10 +39,13 @@ def main():
|
|
26
39
|
log.info("Would attempt to unlock:")
|
27
40
|
for owner, nodes in by_owner.items():
|
28
41
|
for node in nodes:
|
29
|
-
|
42
|
+
node_job = node['description'].replace(
|
43
|
+
config.archive_base, config.results_ui_server)
|
44
|
+
log.info(f"{node['name']}\t{node_job}")
|
30
45
|
else:
|
31
46
|
for owner, nodes in by_owner.items():
|
32
47
|
ops.unlock_safe([node["name"] for node in nodes], owner)
|
48
|
+
log.info(f"unlocked {len(stale)} nodes")
|
33
49
|
|
34
50
|
def parse_args(argv):
|
35
51
|
parser = argparse.ArgumentParser(
|
@@ -77,6 +77,8 @@ Standard arguments:
|
|
77
77
|
[default: qa]
|
78
78
|
--suite-branch <suite_branch>
|
79
79
|
Use this suite branch instead of the ceph branch
|
80
|
+
--suite-sha1 <suite_sha1> The suite sha1 to use for the tests (overrides
|
81
|
+
--suite-branch)
|
80
82
|
--suite-dir <suite_dir> Use this alternative directory as-is when
|
81
83
|
assembling jobs from yaml fragments. This causes
|
82
84
|
<suite_branch> to be ignored for scheduling
|