teuthology 1.2.1__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.
Files changed (427) hide show
  1. teuthology-1.2.2/.github/CODEOWNERS +1 -0
  2. {teuthology-1.2.1 → teuthology-1.2.2}/.github/workflows/ci.yml +0 -5
  3. {teuthology-1.2.1 → teuthology-1.2.2}/.github/workflows/dependencies.yml +4 -5
  4. {teuthology-1.2.1 → teuthology-1.2.2}/.github/workflows/dev_container.yml +15 -10
  5. teuthology-1.2.2/.github/workflows/integration.yml +33 -0
  6. {teuthology-1.2.1 → teuthology-1.2.2}/PKG-INFO +6 -4
  7. teuthology-1.2.2/bootstrap +159 -0
  8. {teuthology-1.2.1 → teuthology-1.2.2}/containers/teuthology-dev/.teuthology.yaml +5 -0
  9. {teuthology-1.2.1 → teuthology-1.2.2}/containers/teuthology-dev/Dockerfile +3 -0
  10. {teuthology-1.2.1 → teuthology-1.2.2}/containers/teuthology-dev/containerized_node.yaml +0 -1
  11. {teuthology-1.2.1 → teuthology-1.2.2}/docs/LAB_SETUP.rst +1 -1
  12. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/docker-compose.yml +2 -0
  13. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/teuthology/Dockerfile +2 -0
  14. {teuthology-1.2.1 → teuthology-1.2.2}/docs/laptop/README.md +41 -20
  15. {teuthology-1.2.1 → teuthology-1.2.2}/docs/laptop/targets.sql +2 -3
  16. {teuthology-1.2.1 → teuthology-1.2.2}/docs/requirements.txt +2 -0
  17. {teuthology-1.2.1 → teuthology-1.2.2}/docs/siteconfig.rst +3 -0
  18. {teuthology-1.2.1 → teuthology-1.2.2}/requirements.txt +8 -6
  19. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/node_cleanup.py +18 -2
  20. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/suite.py +2 -0
  21. {teuthology-1.2.1 → teuthology-1.2.2}/setup.cfg +3 -2
  22. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/__init__.py +0 -1
  23. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/config.py +28 -7
  24. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/dispatcher/supervisor.py +9 -6
  25. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/lock/cli.py +4 -2
  26. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/lock/ops.py +10 -9
  27. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/lock/query.py +28 -4
  28. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/lock/util.py +1 -1
  29. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/misc.py +13 -58
  30. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/__init__.py +202 -176
  31. teuthology-1.2.2/teuthology/openstack/openstack-centos-9.stream-user-data.txt +16 -0
  32. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/setup-openstack.sh +52 -27
  33. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/opsys.py +15 -0
  34. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/remote.py +54 -2
  35. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/run.py +8 -2
  36. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/test_remote.py +37 -0
  37. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/downburst.py +84 -43
  38. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/fog.py +2 -2
  39. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/repo_utils.py +3 -1
  40. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/run.py +1 -1
  41. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/scrape.py +5 -2
  42. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/merge.py +3 -1
  43. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/run.py +51 -37
  44. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/test/test_run_.py +259 -17
  45. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/util.py +2 -2
  46. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/install/packages.yaml +11 -9
  47. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/install/rpm.py +8 -16
  48. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/internal/__init__.py +2 -1
  49. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/internal/syslog.py +17 -13
  50. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/kernel.py +1 -1
  51. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_misc.py +7 -0
  52. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_run.py +42 -0
  53. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_scrape.py +39 -1
  54. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_vps_os_vers_parameter_checking.py +4 -4
  55. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology.egg-info/PKG-INFO +6 -4
  56. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology.egg-info/SOURCES.txt +2 -0
  57. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology.egg-info/requires.txt +3 -2
  58. teuthology-1.2.1/.github/workflows/integration.yml +0 -12
  59. teuthology-1.2.1/bootstrap +0 -251
  60. {teuthology-1.2.1 → teuthology-1.2.2}/.coveragerc +0 -0
  61. {teuthology-1.2.1 → teuthology-1.2.2}/.dockerignore +0 -0
  62. {teuthology-1.2.1 → teuthology-1.2.2}/.gitignore +0 -0
  63. {teuthology-1.2.1 → teuthology-1.2.2}/.gitlab-ci.yml +0 -0
  64. {teuthology-1.2.1 → teuthology-1.2.2}/.readthedocs.yml +0 -0
  65. {teuthology-1.2.1 → teuthology-1.2.2}/.travis.yml +0 -0
  66. {teuthology-1.2.1 → teuthology-1.2.2}/LICENSE +0 -0
  67. {teuthology-1.2.1 → teuthology-1.2.2}/MANIFEST.in +0 -0
  68. {teuthology-1.2.1 → teuthology-1.2.2}/README.rst +0 -0
  69. {teuthology-1.2.1 → teuthology-1.2.2}/ansible.cfg +0 -0
  70. {teuthology-1.2.1 → teuthology-1.2.2}/beanstalk/alpine/Dockerfile +0 -0
  71. {teuthology-1.2.1 → teuthology-1.2.2}/build_qemu_image.sh +0 -0
  72. {teuthology-1.2.1 → teuthology-1.2.2}/containers/teuthology-dev/teuthology.sh +0 -0
  73. {teuthology-1.2.1 → teuthology-1.2.2}/docs/COMPONENTS.rst +0 -0
  74. {teuthology-1.2.1 → teuthology-1.2.2}/docs/ChangeLog.rst +0 -0
  75. {teuthology-1.2.1 → teuthology-1.2.2}/docs/INSTALL.rst +0 -0
  76. {teuthology-1.2.1 → teuthology-1.2.2}/docs/Makefile +0 -0
  77. {teuthology-1.2.1 → teuthology-1.2.2}/docs/README.rst +0 -0
  78. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_static/create_nodes.py +0 -0
  79. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_static/nginx_paddles +0 -0
  80. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_static/nginx_pulpito +0 -0
  81. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_static/nginx_test_logs +0 -0
  82. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_static/worker_start.sh +0 -0
  83. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Book.eot +0 -0
  84. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Book.svg +0 -0
  85. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Book.ttf +0 -0
  86. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Book.woff +0 -0
  87. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Medium.eot +0 -0
  88. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Medium.svg +0 -0
  89. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Medium.ttf +0 -0
  90. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/static/font/ApexSans-Medium.woff +0 -0
  91. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/static/nature.css_t +0 -0
  92. {teuthology-1.2.1 → teuthology-1.2.2}/docs/_themes/ceph/theme.conf +0 -0
  93. {teuthology-1.2.1 → teuthology-1.2.2}/docs/cephlab.png +0 -0
  94. {teuthology-1.2.1 → teuthology-1.2.2}/docs/cephlab.svg +0 -0
  95. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/list.rst +0 -0
  96. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-describe.rst +0 -0
  97. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-dispatcher.rst +0 -0
  98. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-kill.rst +0 -0
  99. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-lock.rst +0 -0
  100. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-ls.rst +0 -0
  101. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-openstack.rst +0 -0
  102. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-prune-logs.rst +0 -0
  103. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-queue.rst +0 -0
  104. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-reimage.rst +0 -0
  105. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-report.rst +0 -0
  106. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-results.rst +0 -0
  107. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-schedule.rst +0 -0
  108. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-suite.rst +0 -0
  109. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-update-inventory.rst +0 -0
  110. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-updatekeys.rst +0 -0
  111. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-wait.rst +0 -0
  112. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology-worker.rst +0 -0
  113. {teuthology-1.2.1 → teuthology-1.2.2}/docs/commands/teuthology.rst +0 -0
  114. {teuthology-1.2.1 → teuthology-1.2.2}/docs/conf.py +0 -0
  115. {teuthology-1.2.1 → teuthology-1.2.2}/docs/detailed_test_config.rst +0 -0
  116. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/README.md +0 -0
  117. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/db/01-init.sh +0 -0
  118. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/start.sh +0 -0
  119. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/testnode/Dockerfile +0 -0
  120. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/testnode/testnode_start.sh +0 -0
  121. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/testnode/testnode_stop.sh +0 -0
  122. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/testnode/testnode_sudoers +0 -0
  123. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/teuthology/.teuthology.yaml +0 -0
  124. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/teuthology/containerized_node.yaml +0 -0
  125. {teuthology-1.2.1 → teuthology-1.2.2}/docs/docker-compose/teuthology/teuthology.sh +0 -0
  126. {teuthology-1.2.1 → teuthology-1.2.2}/docs/downburst_vms.rst +0 -0
  127. {teuthology-1.2.1 → teuthology-1.2.2}/docs/exporter.rst +0 -0
  128. {teuthology-1.2.1 → teuthology-1.2.2}/docs/fragment_merging.rst +0 -0
  129. {teuthology-1.2.1 → teuthology-1.2.2}/docs/index.rst +0 -0
  130. {teuthology-1.2.1 → teuthology-1.2.2}/docs/intro_testers.rst +0 -0
  131. {teuthology-1.2.1 → teuthology-1.2.2}/docs/laptop/default-pool.xml +0 -0
  132. {teuthology-1.2.1 → teuthology-1.2.2}/docs/laptop/front.xml +0 -0
  133. {teuthology-1.2.1 → teuthology-1.2.2}/docs/laptop/hosts +0 -0
  134. {teuthology-1.2.1 → teuthology-1.2.2}/docs/laptop/ssh_config +0 -0
  135. {teuthology-1.2.1 → teuthology-1.2.2}/docs/laptop/teuthology.yaml +0 -0
  136. {teuthology-1.2.1 → teuthology-1.2.2}/docs/libcloud_backend.rst +0 -0
  137. {teuthology-1.2.1 → teuthology-1.2.2}/docs/openstack_backend.rst +0 -0
  138. {teuthology-1.2.1 → teuthology-1.2.2}/examples/3node_ceph.yaml +0 -0
  139. {teuthology-1.2.1 → teuthology-1.2.2}/examples/3node_rgw.yaml +0 -0
  140. {teuthology-1.2.1 → teuthology-1.2.2}/examples/parallel_example.yaml +0 -0
  141. {teuthology-1.2.1 → teuthology-1.2.2}/hammer.sh +0 -0
  142. {teuthology-1.2.1 → teuthology-1.2.2}/openstack-delegate.sh +0 -0
  143. {teuthology-1.2.1 → teuthology-1.2.2}/pyproject.toml +0 -0
  144. {teuthology-1.2.1 → teuthology-1.2.2}/pytest.ini +0 -0
  145. {teuthology-1.2.1 → teuthology-1.2.2}/requirements.yml +0 -0
  146. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/__init__.py +0 -0
  147. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/describe.py +0 -0
  148. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/dispatcher.py +0 -0
  149. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/exporter.py +0 -0
  150. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/kill.py +0 -0
  151. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/lock.py +0 -0
  152. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/ls.py +0 -0
  153. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/openstack.py +0 -0
  154. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/prune_logs.py +0 -0
  155. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/queue.py +0 -0
  156. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/reimage.py +0 -0
  157. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/report.py +0 -0
  158. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/results.py +0 -0
  159. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/run.py +0 -0
  160. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/schedule.py +0 -0
  161. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/supervisor.py +0 -0
  162. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/script.py +0 -0
  163. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_dispatcher_.py +0 -0
  164. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_exporter_.py +0 -0
  165. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_lock.py +0 -0
  166. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_ls.py +0 -0
  167. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_prune_logs.py +0 -0
  168. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_report.py +0 -0
  169. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_results.py +0 -0
  170. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_run.py +0 -0
  171. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_schedule.py +0 -0
  172. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_suite.py +0 -0
  173. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_supervisor_.py +0 -0
  174. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/test/test_updatekeys.py +0 -0
  175. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/update_inventory.py +0 -0
  176. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/updatekeys.py +0 -0
  177. {teuthology-1.2.1 → teuthology-1.2.2}/scripts/wait.py +0 -0
  178. {teuthology-1.2.1 → teuthology-1.2.2}/systemd/teuthology-dispatcher@.service +0 -0
  179. {teuthology-1.2.1 → teuthology-1.2.2}/systemd/teuthology-exporter.service +0 -0
  180. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/beanstalk.py +0 -0
  181. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/ceph.conf.template +0 -0
  182. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/contextutil.py +0 -0
  183. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/describe_tests.py +0 -0
  184. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/dispatcher/__init__.py +0 -0
  185. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/dispatcher/test/test_dispatcher.py +0 -0
  186. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/dispatcher/test/test_reimage_error_mark_machine_down.py +0 -0
  187. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/dispatcher/test/test_supervisor.py +0 -0
  188. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/exceptions.py +0 -0
  189. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/exit.py +0 -0
  190. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/exporter.py +0 -0
  191. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/job_status.py +0 -0
  192. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/kill.py +0 -0
  193. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/lock/__init__.py +0 -0
  194. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/lock/test/__init__.py +0 -0
  195. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/lock/test/test_lock.py +0 -0
  196. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/ls.py +0 -0
  197. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/nuke/__init__.py +0 -0
  198. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/archive-key +0 -0
  199. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/archive-key.pub +0 -0
  200. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/bootstrap-teuthology.sh +0 -0
  201. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-basic.yaml +0 -0
  202. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-buildpackages.yaml +0 -0
  203. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-6.5-user-data.txt +0 -0
  204. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-7.0-user-data.txt +0 -0
  205. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-7.1-user-data.txt +0 -0
  206. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-7.2-user-data.txt +0 -0
  207. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-centos-7.3-user-data.txt +0 -0
  208. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-debian-7.0-user-data.txt +0 -0
  209. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-debian-8.0-user-data.txt +0 -0
  210. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-15.0-user-data.txt +0 -0
  211. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-15.1-user-data.txt +0 -0
  212. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-42.1-user-data.txt +0 -0
  213. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-42.2-user-data.txt +0 -0
  214. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-opensuse-42.3-user-data.txt +0 -0
  215. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-12.1-user-data.txt +0 -0
  216. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-12.2-user-data.txt +0 -0
  217. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-12.3-user-data.txt +0 -0
  218. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-15.0-user-data.txt +0 -0
  219. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-sle-15.1-user-data.txt +0 -0
  220. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-teuthology.cron +0 -0
  221. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-teuthology.init +0 -0
  222. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-ubuntu-12.04-user-data.txt +0 -0
  223. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-ubuntu-14.04-user-data.txt +0 -0
  224. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-ubuntu-16.04-user-data.txt +0 -0
  225. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/openstack-user-data.txt +0 -0
  226. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/__init__.py +0 -0
  227. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/archive-on-error.yaml +0 -0
  228. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/noop.yaml +0 -0
  229. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/openstack-integration.py +0 -0
  230. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/resources_hint.yaml +0 -0
  231. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/resources_hint_no_cinder.yaml +0 -0
  232. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/stop_worker.yaml +0 -0
  233. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/suites/noop/+ +0 -0
  234. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/suites/noop/noop.yaml +0 -0
  235. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/suites/nuke/+ +0 -0
  236. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/test_config.py +0 -0
  237. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/test_openstack.py +0 -0
  238. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/openstack/test/user-data-test1.txt +0 -0
  239. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/__init__.py +0 -0
  240. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/cluster.py +0 -0
  241. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/connection.py +0 -0
  242. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/console.py +0 -0
  243. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/daemon/__init__.py +0 -0
  244. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/daemon/cephadmunit.py +0 -0
  245. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/daemon/group.py +0 -0
  246. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/daemon/state.py +0 -0
  247. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/daemon/systemd.py +0 -0
  248. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/monkey.py +0 -0
  249. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/__init__.py +0 -0
  250. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/files/daemon-systemdstate-pid-ps-ef.output +0 -0
  251. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/integration/__init__.py +0 -0
  252. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/integration/test_integration.py +0 -0
  253. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/test_cluster.py +0 -0
  254. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/test_connection.py +0 -0
  255. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/test_console.py +0 -0
  256. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/test_opsys.py +0 -0
  257. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/test_run.py +0 -0
  258. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/test_systemd.py +0 -0
  259. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/orchestra/test/util.py +0 -0
  260. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/packaging.py +0 -0
  261. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/parallel.py +0 -0
  262. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/__init__.py +0 -0
  263. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/cloud/__init__.py +0 -0
  264. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/cloud/base.py +0 -0
  265. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/cloud/openstack.py +0 -0
  266. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_base.py +0 -0
  267. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_cloud_init.py +0 -0
  268. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_cloud_util.py +0 -0
  269. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_openstack.py +0 -0
  270. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/cloud/test/test_openstack_userdata_conf.yaml +0 -0
  271. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/cloud/util.py +0 -0
  272. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/openstack.py +0 -0
  273. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/pelagos.py +0 -0
  274. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/test/test_downburst.py +0 -0
  275. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/test/test_fog.py +0 -0
  276. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/test/test_init_provision.py +0 -0
  277. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/provision/test/test_pelagos.py +0 -0
  278. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/prune.py +0 -0
  279. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/reimage.py +0 -0
  280. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/report.py +0 -0
  281. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/results.py +0 -0
  282. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/run_tasks.py +0 -0
  283. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/safepath.py +0 -0
  284. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/schedule.py +0 -0
  285. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/__init__.py +0 -0
  286. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/build_matrix.py +0 -0
  287. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/fragment-merge.lua +0 -0
  288. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/matrix.py +0 -0
  289. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/placeholder.py +0 -0
  290. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/test/conftest.py +0 -0
  291. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/test/suites/noop/noop.yaml +0 -0
  292. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/test/test_build_matrix.py +0 -0
  293. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/test/test_init.py +0 -0
  294. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/test/test_matrix.py +0 -0
  295. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/test/test_merge.py +0 -0
  296. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/test/test_placeholder.py +0 -0
  297. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/suite/test/test_util.py +0 -0
  298. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/__init__.py +0 -0
  299. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/ansible.py +0 -0
  300. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/args.py +0 -0
  301. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/background_exec.py +0 -0
  302. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/Makefile +0 -0
  303. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-6.5-user-data.txt +0 -0
  304. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-7.0-user-data.txt +0 -0
  305. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-7.1-user-data.txt +0 -0
  306. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-7.2-user-data.txt +0 -0
  307. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/centos-7.3-user-data.txt +0 -0
  308. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/common.sh +0 -0
  309. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/debian-8.0-user-data.txt +0 -0
  310. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/make-deb.sh +0 -0
  311. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/make-rpm.sh +0 -0
  312. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/opensuse-15.0-user-data.txt +0 -0
  313. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/opensuse-42.1-user-data.txt +0 -0
  314. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/opensuse-42.2-user-data.txt +0 -0
  315. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/opensuse-42.3-user-data.txt +0 -0
  316. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/sle-12.1-user-data.txt +0 -0
  317. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/sle-12.2-user-data.txt +0 -0
  318. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/sle-12.3-user-data.txt +0 -0
  319. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/sle-15.0-user-data.txt +0 -0
  320. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/ubuntu-12.04-user-data.txt +0 -0
  321. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/ubuntu-14.04-user-data.txt +0 -0
  322. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/ubuntu-16.04-user-data.txt +0 -0
  323. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages/user-data.txt +0 -0
  324. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/buildpackages.py +0 -0
  325. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/ceph_ansible.py +0 -0
  326. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/cephmetrics.py +0 -0
  327. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/clock.py +0 -0
  328. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/common_fs_utils.py +0 -0
  329. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/console_log.py +0 -0
  330. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/dump_ctx.py +0 -0
  331. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/exec.py +0 -0
  332. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/full_sequential.py +0 -0
  333. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/full_sequential_finally.py +0 -0
  334. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/hadoop.py +0 -0
  335. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/install/__init__.py +0 -0
  336. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/install/bin/adjust-ulimits +0 -0
  337. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/install/bin/daemon-helper +0 -0
  338. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/install/bin/stdin-killer +0 -0
  339. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/install/deb.py +0 -0
  340. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/install/redhat.py +0 -0
  341. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/install/util.py +0 -0
  342. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/interactive.py +0 -0
  343. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/internal/check_lock.py +0 -0
  344. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/internal/edit_sudoers.sh +0 -0
  345. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/internal/git_ignore_ssl.py +0 -0
  346. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/internal/lock_machines.py +0 -0
  347. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/internal/redhat.py +0 -0
  348. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/internal/vm_setup.py +0 -0
  349. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/iscsi.py +0 -0
  350. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/knfsd.py +0 -0
  351. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/localdir.py +0 -0
  352. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/lockfile.py +0 -0
  353. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/loop.py +0 -0
  354. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/mpi.py +0 -0
  355. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/nfs.py +0 -0
  356. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/nop.py +0 -0
  357. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/parallel.py +0 -0
  358. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/parallel_example.py +0 -0
  359. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/pcp.j2 +0 -0
  360. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/pcp.py +0 -0
  361. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/pexec.py +0 -0
  362. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/print.py +0 -0
  363. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/proc_thrasher.py +0 -0
  364. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/selinux.py +0 -0
  365. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/sequential.py +0 -0
  366. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/sleep.py +0 -0
  367. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/ssh_keys.py +0 -0
  368. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/tasktest.py +0 -0
  369. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/tests/__init__.py +0 -0
  370. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/tests/test_fetch_coredumps.py +0 -0
  371. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/tests/test_locking.py +0 -0
  372. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/tests/test_run.py +0 -0
  373. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/task/timer.py +0 -0
  374. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/templates/email-sleep-before-teardown.jinja2 +0 -0
  375. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/templates/rocketchat-sleep-before-teardown.jinja2 +0 -0
  376. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/__init__.py +0 -0
  377. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/fake_archive.py +0 -0
  378. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/fake_fs.py +0 -0
  379. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/integration/__init__.py +0 -0
  380. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/integration/test_suite.py +0 -0
  381. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/task/__init__.py +0 -0
  382. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/task/test_ansible.py +0 -0
  383. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/task/test_ceph_ansible.py +0 -0
  384. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/task/test_console_log.py +0 -0
  385. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/task/test_install.py +0 -0
  386. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/task/test_internal.py +0 -0
  387. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/task/test_kernel.py +0 -0
  388. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/task/test_pcp.py +0 -0
  389. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/task/test_selinux.py +0 -0
  390. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_config.py +0 -0
  391. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_contextutil.py +0 -0
  392. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_describe_tests.py +0 -0
  393. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_email_sleep_before_teardown.py +0 -0
  394. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_exit.py +0 -0
  395. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_get_distro.py +0 -0
  396. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_get_distro_version.py +0 -0
  397. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_get_multi_machine_types.py +0 -0
  398. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_imports.py +0 -0
  399. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_job_status.py +0 -0
  400. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_kill.py +0 -0
  401. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_ls.py +0 -0
  402. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_packaging.py +0 -0
  403. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_parallel.py +0 -0
  404. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_repo_utils.py +0 -0
  405. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_report.py +0 -0
  406. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_results.py +0 -0
  407. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_safepath.py +0 -0
  408. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_schedule.py +0 -0
  409. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/test/test_timer.py +0 -0
  410. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/timer.py +0 -0
  411. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/__init__.py +0 -0
  412. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/compat.py +0 -0
  413. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/flock.py +0 -0
  414. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/loggerfile.py +0 -0
  415. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/scanner.py +0 -0
  416. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/sentry.py +0 -0
  417. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/test/files/test_unit_test.xml +0 -0
  418. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/test/files/test_valgrind.xml +0 -0
  419. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/test/test_scanner.py +0 -0
  420. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/test/test_time.py +0 -0
  421. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology/util/time.py +0 -0
  422. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology.egg-info/dependency_links.txt +0 -0
  423. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology.egg-info/entry_points.txt +0 -0
  424. {teuthology-1.2.1 → teuthology-1.2.2}/teuthology.egg-info/top_level.txt +0 -0
  425. {teuthology-1.2.1 → teuthology-1.2.2}/tox.ini +0 -0
  426. {teuthology-1.2.1 → teuthology-1.2.2}/update-requirements.sh +0 -0
  427. {teuthology-1.2.1 → 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: ubuntu-latest
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
- uses: docker/login-action@v3
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@v5
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
- platforms: linux/amd64,linux/arm64
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,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: teuthology
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Ceph test framework
5
5
  Home-page: https://github.com/ceph/teuthology
6
6
  Author: Red Hat, Inc.
@@ -24,20 +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.16.6
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
33
  Requires-Dist: docopt
34
- Requires-Dist: gevent
34
+ Requires-Dist: gevent<25
35
35
  Requires-Dist: httplib2
36
36
  Requires-Dist: humanfriendly
37
37
  Requires-Dist: lupa
38
38
  Requires-Dist: lxml
39
39
  Requires-Dist: ndg-httpsclient
40
40
  Requires-Dist: netaddr
41
+ Requires-Dist: openstacksdk
41
42
  Requires-Dist: paramiko
42
43
  Requires-Dist: pexpect
43
44
  Requires-Dist: pip-tools
@@ -74,6 +75,7 @@ Requires-Dist: xmltodict; extra == "test"
74
75
  Provides-Extra: openstack
75
76
  Requires-Dist: python-openstackclient; extra == "openstack"
76
77
  Requires-Dist: python-novaclient; extra == "openstack"
78
+ Dynamic: license-file
77
79
 
78
80
  ===================================================
79
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!!!"
@@ -7,3 +7,8 @@ teuthology_path: /teuthology
7
7
  archive_base: /archive_dir
8
8
  reserve_machines: 0
9
9
  lab_domain: ''
10
+
11
+ defaults:
12
+ cephadm:
13
+ containers:
14
+ image: 'quay.ceph.io/ceph-ci/ceph'
@@ -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
@@ -7,6 +7,5 @@ overrides:
7
7
  cm_user: root
8
8
  start_rpcbind: false
9
9
  cephadm:
10
- image: quay.ceph.io/ceph-ci/ceph:main
11
10
  osd_method: raw
12
11
  no_cgroups_split: true
@@ -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 python-dev python-virtualenv postgresql postgresql-contrib postgresql-server-dev-all supervisor
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
 
@@ -74,6 +74,8 @@ services:
74
74
  TESTNODES:
75
75
  TEUTHOLOGY_WAIT:
76
76
  TEUTH_BRANCH:
77
+ volumes:
78
+ - /tmp/archive_dir:/archive_dir:rw
77
79
  testnode:
78
80
  build:
79
81
  context: ./testnode
@@ -5,6 +5,8 @@ ENV LANG=C.UTF-8
5
5
  RUN apt-get update && \
6
6
  apt-get install -y \
7
7
  git \
8
+ jq \
9
+ curl \
8
10
  qemu-utils \
9
11
  python3-dev \
10
12
  libssl-dev \
@@ -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 80:8080 \
76
- -e PADDLES_SERVER_HOST=0.0.0.0 \
77
- -e PADDLES_SQLALCHEMY_URL=postgresql+psycopg2://paddles:secret@paddles-postgres/paddles \
78
- paddles
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
- For openSUSE there is no beanstalkd package as for Ubuntu, so it is needed to add corresponding repo:
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 worker
370
+ ### Run dispatcher
349
371
 
350
- Create archive and worker log directories and run the worker polling required tube.
372
+ Create and share archive directory.
351
373
 
352
374
  ```bash
353
- TEUTH_HOME=$HOME/.teuthology
354
- mkdir -p $TEUTH_HOME/www/logs/jobs
355
- mkdir -p $TEUTH_HOME/www/logs/workers
375
+ mkdir -p ~/.teuthology/archive
356
376
 
357
- teuthology-worker -v --tube vps --archive-dir $TEUTH_HOME/www/logs/jobs --log-dir $TEUTH_HOME/www/logs/workers
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 octopus --suite dummy -d centos -D 8.2 --sha1 35adebe94e8b0a17e7b56379a8bf24e5f7b8ced4 --limit 1 -m vps -t refs/pull/1548/merge
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
- (cd $TEUTH_HOME/www && python -m SimpleHTTPServer 8181)
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 transaction;
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 transaction
9
-
8
+ commit;
@@ -1,3 +1,5 @@
1
1
  sphinx >= 5.0.0 # for python 3.10
2
2
  sphinxcontrib-programoutput
3
3
  mock == 2.0.0
4
+ openstacksdk == 4.5.0
5
+ python-openstackclient >= 6.0.0
@@ -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.16.6
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.8
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==23.9.1
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.4
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.25.0
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
- stale = query.find_stale_locks(args.owner)
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
- log.info(f"{node['name']}\t{node['description']}")
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