teuthology 1.1.0__tar.gz → 1.2.0__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 (443) hide show
  1. teuthology-1.2.0/.coveragerc +2 -0
  2. teuthology-1.2.0/.dockerignore +3 -0
  3. teuthology-1.2.0/.github/workflows/ci.yml +40 -0
  4. teuthology-1.2.0/.github/workflows/dependencies.yml +55 -0
  5. teuthology-1.2.0/.github/workflows/dev_container.yml +37 -0
  6. teuthology-1.2.0/.github/workflows/integration.yml +12 -0
  7. teuthology-1.2.0/.gitignore +32 -0
  8. teuthology-1.2.0/.gitlab-ci.yml +3 -0
  9. teuthology-1.2.0/.readthedocs.yml +20 -0
  10. teuthology-1.2.0/.travis.yml +17 -0
  11. teuthology-1.2.0/LICENSE +19 -0
  12. {teuthology-1.1.0 → teuthology-1.2.0}/MANIFEST.in +2 -0
  13. teuthology-1.2.0/PKG-INFO +89 -0
  14. teuthology-1.2.0/ansible.cfg +4 -0
  15. teuthology-1.2.0/beanstalk/alpine/Dockerfile +13 -0
  16. teuthology-1.2.0/bootstrap +251 -0
  17. teuthology-1.2.0/build_qemu_image.sh +61 -0
  18. teuthology-1.2.0/containers/teuthology-dev/.teuthology.yaml +9 -0
  19. teuthology-1.2.0/containers/teuthology-dev/Dockerfile +42 -0
  20. teuthology-1.2.0/containers/teuthology-dev/containerized_node.yaml +12 -0
  21. teuthology-1.2.0/containers/teuthology-dev/teuthology.sh +40 -0
  22. teuthology-1.2.0/docs/COMPONENTS.rst +71 -0
  23. teuthology-1.2.0/docs/ChangeLog.rst +6 -0
  24. teuthology-1.2.0/docs/INSTALL.rst +119 -0
  25. teuthology-1.2.0/docs/LAB_SETUP.rst +142 -0
  26. teuthology-1.2.0/docs/Makefile +180 -0
  27. teuthology-1.2.0/docs/README.rst +149 -0
  28. teuthology-1.2.0/docs/_static/create_nodes.py +65 -0
  29. teuthology-1.2.0/docs/_static/nginx_paddles +11 -0
  30. teuthology-1.2.0/docs/_static/nginx_pulpito +11 -0
  31. teuthology-1.2.0/docs/_static/nginx_test_logs +7 -0
  32. teuthology-1.2.0/docs/_static/worker_start.sh +40 -0
  33. teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Book.eot +0 -0
  34. teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Book.svg +1 -0
  35. teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Book.ttf +0 -0
  36. teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Book.woff +0 -0
  37. teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Medium.eot +0 -0
  38. teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Medium.svg +1 -0
  39. teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Medium.ttf +0 -0
  40. teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Medium.woff +0 -0
  41. teuthology-1.2.0/docs/_themes/ceph/static/nature.css_t +325 -0
  42. teuthology-1.2.0/docs/_themes/ceph/theme.conf +4 -0
  43. teuthology-1.2.0/docs/cephlab.png +0 -0
  44. teuthology-1.2.0/docs/cephlab.svg +3 -0
  45. teuthology-1.2.0/docs/commands/list.rst +9 -0
  46. teuthology-1.2.0/docs/commands/teuthology-describe.rst +4 -0
  47. teuthology-1.2.0/docs/commands/teuthology-dispatcher.rst +9 -0
  48. teuthology-1.2.0/docs/commands/teuthology-kill.rst +4 -0
  49. teuthology-1.2.0/docs/commands/teuthology-lock.rst +4 -0
  50. teuthology-1.2.0/docs/commands/teuthology-ls.rst +4 -0
  51. teuthology-1.2.0/docs/commands/teuthology-openstack.rst +4 -0
  52. teuthology-1.2.0/docs/commands/teuthology-prune-logs.rst +4 -0
  53. teuthology-1.2.0/docs/commands/teuthology-queue.rst +4 -0
  54. teuthology-1.2.0/docs/commands/teuthology-reimage.rst +4 -0
  55. teuthology-1.2.0/docs/commands/teuthology-report.rst +4 -0
  56. teuthology-1.2.0/docs/commands/teuthology-results.rst +4 -0
  57. teuthology-1.2.0/docs/commands/teuthology-schedule.rst +4 -0
  58. teuthology-1.2.0/docs/commands/teuthology-suite.rst +4 -0
  59. teuthology-1.2.0/docs/commands/teuthology-update-inventory.rst +4 -0
  60. teuthology-1.2.0/docs/commands/teuthology-updatekeys.rst +4 -0
  61. teuthology-1.2.0/docs/commands/teuthology-wait.rst +4 -0
  62. teuthology-1.2.0/docs/commands/teuthology-worker.rst +4 -0
  63. teuthology-1.2.0/docs/commands/teuthology.rst +4 -0
  64. teuthology-1.2.0/docs/conf.py +262 -0
  65. teuthology-1.2.0/docs/detailed_test_config.rst +309 -0
  66. teuthology-1.2.0/docs/docker-compose/README.md +93 -0
  67. teuthology-1.2.0/docs/docker-compose/db/01-init.sh +8 -0
  68. teuthology-1.2.0/docs/docker-compose/docker-compose.yml +92 -0
  69. teuthology-1.2.0/docs/docker-compose/start.sh +48 -0
  70. teuthology-1.2.0/docs/docker-compose/testnode/Dockerfile +26 -0
  71. teuthology-1.2.0/docs/docker-compose/testnode/testnode_start.sh +17 -0
  72. teuthology-1.2.0/docs/docker-compose/testnode/testnode_stop.sh +9 -0
  73. teuthology-1.2.0/docs/docker-compose/testnode/testnode_sudoers +4 -0
  74. teuthology-1.2.0/docs/docker-compose/teuthology/.teuthology.yaml +9 -0
  75. teuthology-1.2.0/docs/docker-compose/teuthology/Dockerfile +47 -0
  76. teuthology-1.2.0/docs/docker-compose/teuthology/containerized_node.yaml +8 -0
  77. teuthology-1.2.0/docs/docker-compose/teuthology/teuthology.sh +46 -0
  78. teuthology-1.2.0/docs/downburst_vms.rst +89 -0
  79. teuthology-1.2.0/docs/exporter.rst +67 -0
  80. teuthology-1.2.0/docs/fragment_merging.rst +318 -0
  81. teuthology-1.2.0/docs/index.rst +26 -0
  82. teuthology-1.2.0/docs/intro_testers.rst +81 -0
  83. teuthology-1.2.0/docs/laptop/README.md +434 -0
  84. teuthology-1.2.0/docs/laptop/default-pool.xml +7 -0
  85. teuthology-1.2.0/docs/laptop/front.xml +15 -0
  86. teuthology-1.2.0/docs/laptop/hosts +7 -0
  87. teuthology-1.2.0/docs/laptop/ssh_config +6 -0
  88. teuthology-1.2.0/docs/laptop/targets.sql +9 -0
  89. teuthology-1.2.0/docs/laptop/teuthology.yaml +30 -0
  90. teuthology-1.2.0/docs/libcloud_backend.rst +43 -0
  91. teuthology-1.2.0/docs/openstack_backend.rst +214 -0
  92. teuthology-1.2.0/docs/requirements.txt +3 -0
  93. teuthology-1.2.0/docs/siteconfig.rst +260 -0
  94. teuthology-1.2.0/examples/3node_ceph.yaml +15 -0
  95. teuthology-1.2.0/examples/3node_rgw.yaml +24 -0
  96. teuthology-1.2.0/examples/parallel_example.yaml +20 -0
  97. teuthology-1.2.0/hammer.sh +32 -0
  98. teuthology-1.2.0/openstack-delegate.sh +7 -0
  99. teuthology-1.2.0/pyproject.toml +10 -0
  100. teuthology-1.2.0/pytest.ini +5 -0
  101. teuthology-1.2.0/requirements.txt +206 -0
  102. teuthology-1.2.0/requirements.yml +12 -0
  103. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/describe.py +1 -0
  104. teuthology-1.2.0/scripts/dispatcher.py +62 -0
  105. teuthology-1.2.0/scripts/exporter.py +18 -0
  106. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/lock.py +1 -1
  107. teuthology-1.2.0/scripts/node_cleanup.py +58 -0
  108. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/openstack.py +9 -9
  109. teuthology-1.2.0/scripts/results.py +25 -0
  110. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/schedule.py +4 -0
  111. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/suite.py +57 -16
  112. teuthology-1.2.0/scripts/supervisor.py +44 -0
  113. teuthology-1.2.0/scripts/test/script.py +16 -0
  114. teuthology-1.2.0/scripts/test/test_dispatcher_.py +5 -0
  115. teuthology-1.2.0/scripts/test/test_exporter_.py +5 -0
  116. teuthology-1.2.0/scripts/test/test_lock.py +5 -0
  117. teuthology-1.2.0/scripts/test/test_ls.py +15 -0
  118. teuthology-1.2.0/scripts/test/test_prune_logs.py +5 -0
  119. teuthology-1.2.0/scripts/test/test_report.py +5 -0
  120. teuthology-1.2.0/scripts/test/test_results.py +5 -0
  121. teuthology-1.2.0/scripts/test/test_run.py +45 -0
  122. teuthology-1.2.0/scripts/test/test_schedule.py +5 -0
  123. teuthology-1.2.0/scripts/test/test_suite.py +5 -0
  124. teuthology-1.2.0/scripts/test/test_supervisor_.py +5 -0
  125. teuthology-1.2.0/scripts/test/test_updatekeys.py +21 -0
  126. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/update_inventory.py +10 -4
  127. teuthology-1.2.0/setup.cfg +156 -0
  128. teuthology-1.2.0/systemd/teuthology-dispatcher@.service +18 -0
  129. teuthology-1.2.0/systemd/teuthology-exporter.service +12 -0
  130. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/__init__.py +24 -26
  131. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/beanstalk.py +4 -3
  132. teuthology-1.2.0/teuthology/ceph.conf.template +101 -0
  133. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/config.py +16 -6
  134. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/contextutil.py +18 -14
  135. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/describe_tests.py +25 -18
  136. teuthology-1.2.0/teuthology/dispatcher/__init__.py +365 -0
  137. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/dispatcher/supervisor.py +140 -58
  138. teuthology-1.2.0/teuthology/dispatcher/test/test_dispatcher.py +203 -0
  139. teuthology-1.2.0/teuthology/dispatcher/test/test_reimage_error_mark_machine_down.py +104 -0
  140. teuthology-1.2.0/teuthology/dispatcher/test/test_supervisor.py +117 -0
  141. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/exceptions.py +43 -0
  142. teuthology-1.2.0/teuthology/exporter.py +347 -0
  143. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/kill.py +76 -81
  144. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/cli.py +3 -3
  145. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/ops.py +135 -61
  146. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/query.py +61 -44
  147. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/ls.py +1 -1
  148. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/misc.py +61 -75
  149. teuthology-1.2.0/teuthology/nuke/__init__.py +20 -0
  150. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/__init__.py +4 -3
  151. teuthology-1.2.0/teuthology/openstack/bootstrap-teuthology.sh +33 -0
  152. teuthology-1.2.0/teuthology/openstack/openstack-basic.yaml +15 -0
  153. teuthology-1.2.0/teuthology/openstack/openstack-buildpackages.yaml +10 -0
  154. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-centos-7.0-user-data.txt +1 -1
  155. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-centos-7.1-user-data.txt +1 -1
  156. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-centos-7.2-user-data.txt +1 -1
  157. teuthology-1.2.0/teuthology/openstack/openstack-centos-7.3-user-data.txt +21 -0
  158. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-debian-8.0-user-data.txt +1 -1
  159. teuthology-1.2.0/teuthology/openstack/openstack-opensuse-15.0-user-data.txt +26 -0
  160. teuthology-1.2.0/teuthology/openstack/openstack-opensuse-15.1-user-data.txt +26 -0
  161. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-opensuse-42.1-user-data.txt +1 -1
  162. teuthology-1.2.0/teuthology/openstack/openstack-opensuse-42.2-user-data.txt +28 -0
  163. teuthology-1.2.0/teuthology/openstack/openstack-opensuse-42.3-user-data.txt +27 -0
  164. teuthology-1.2.0/teuthology/openstack/openstack-sle-12.1-user-data.txt +25 -0
  165. teuthology-1.2.0/teuthology/openstack/openstack-sle-12.2-user-data.txt +27 -0
  166. teuthology-1.2.0/teuthology/openstack/openstack-sle-12.3-user-data.txt +24 -0
  167. teuthology-1.2.0/teuthology/openstack/openstack-sle-15.0-user-data.txt +25 -0
  168. teuthology-1.2.0/teuthology/openstack/openstack-sle-15.1-user-data.txt +37 -0
  169. teuthology-1.2.0/teuthology/openstack/openstack-teuthology.cron +1 -0
  170. teuthology-1.2.0/teuthology/openstack/openstack-ubuntu-14.04-user-data.txt +21 -0
  171. teuthology-1.2.0/teuthology/openstack/openstack-ubuntu-16.04-user-data.txt +21 -0
  172. teuthology-1.2.0/teuthology/openstack/test/archive-on-error.yaml +1 -0
  173. teuthology-1.2.0/teuthology/openstack/test/noop.yaml +12 -0
  174. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/test/openstack-integration.py +3 -46
  175. teuthology-1.2.0/teuthology/openstack/test/resources_hint.yaml +25 -0
  176. teuthology-1.2.0/teuthology/openstack/test/resources_hint_no_cinder.yaml +20 -0
  177. teuthology-1.2.0/teuthology/openstack/test/stop_worker.yaml +1 -0
  178. teuthology-1.2.0/teuthology/openstack/test/suites/noop/noop.yaml +9 -0
  179. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/test/test_config.py +1 -1
  180. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/test/test_openstack.py +7 -7
  181. teuthology-1.2.0/teuthology/openstack/test/user-data-test1.txt +5 -0
  182. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/cluster.py +49 -7
  183. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/connection.py +16 -5
  184. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/console.py +111 -50
  185. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/cephadmunit.py +17 -4
  186. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/state.py +8 -1
  187. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/systemd.py +4 -4
  188. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/opsys.py +30 -11
  189. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/remote.py +405 -338
  190. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/run.py +3 -3
  191. teuthology-1.2.0/teuthology/orchestra/test/files/daemon-systemdstate-pid-ps-ef.output +5 -0
  192. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/integration/test_integration.py +1 -1
  193. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_cluster.py +66 -74
  194. teuthology-1.2.0/teuthology/orchestra/test/test_connection.py +119 -0
  195. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_console.py +1 -1
  196. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_opsys.py +24 -0
  197. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_remote.py +50 -13
  198. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_run.py +2 -2
  199. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/packaging.py +19 -16
  200. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/__init__.py +30 -10
  201. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/cloud/openstack.py +12 -6
  202. teuthology-1.2.0/teuthology/provision/cloud/test/test_base.py +90 -0
  203. teuthology-1.2.0/teuthology/provision/cloud/test/test_cloud_init.py +60 -0
  204. teuthology-1.2.0/teuthology/provision/cloud/test/test_cloud_util.py +172 -0
  205. teuthology-1.2.0/teuthology/provision/cloud/test/test_openstack.py +781 -0
  206. teuthology-1.2.0/teuthology/provision/cloud/test/test_openstack_userdata_conf.yaml +24 -0
  207. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/cloud/util.py +1 -2
  208. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/downburst.py +4 -3
  209. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/fog.py +68 -20
  210. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/openstack.py +5 -4
  211. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/pelagos.py +1 -1
  212. teuthology-1.2.0/teuthology/provision/test/test_downburst.py +105 -0
  213. teuthology-1.2.0/teuthology/provision/test/test_fog.py +339 -0
  214. teuthology-1.2.0/teuthology/provision/test/test_init_provision.py +46 -0
  215. teuthology-1.2.0/teuthology/provision/test/test_pelagos.py +46 -0
  216. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/repo_utils.py +43 -13
  217. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/report.py +57 -35
  218. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/results.py +5 -3
  219. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/run.py +13 -14
  220. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/run_tasks.py +27 -43
  221. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/schedule.py +4 -3
  222. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/scrape.py +28 -22
  223. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/__init__.py +74 -45
  224. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/build_matrix.py +34 -24
  225. teuthology-1.2.0/teuthology/suite/fragment-merge.lua +105 -0
  226. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/matrix.py +31 -2
  227. teuthology-1.2.0/teuthology/suite/merge.py +175 -0
  228. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/placeholder.py +6 -9
  229. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/run.py +175 -100
  230. teuthology-1.2.0/teuthology/suite/test/conftest.py +4 -0
  231. teuthology-1.2.0/teuthology/suite/test/suites/noop/noop.yaml +7 -0
  232. teuthology-1.2.0/teuthology/suite/test/test_build_matrix.py +815 -0
  233. teuthology-1.2.0/teuthology/suite/test/test_init.py +267 -0
  234. teuthology-1.2.0/teuthology/suite/test/test_matrix.py +82 -0
  235. teuthology-1.2.0/teuthology/suite/test/test_merge.py +231 -0
  236. teuthology-1.2.0/teuthology/suite/test/test_placeholder.py +57 -0
  237. teuthology-1.2.0/teuthology/suite/test/test_run_.py +402 -0
  238. teuthology-1.2.0/teuthology/suite/test/test_util.py +267 -0
  239. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/util.py +64 -218
  240. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/__init__.py +1 -1
  241. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/ansible.py +101 -32
  242. teuthology-1.2.0/teuthology/task/buildpackages/Makefile +84 -0
  243. teuthology-1.2.0/teuthology/task/buildpackages/centos-6.5-user-data.txt +15 -0
  244. teuthology-1.2.0/teuthology/task/buildpackages/centos-7.0-user-data.txt +10 -0
  245. teuthology-1.2.0/teuthology/task/buildpackages/centos-7.1-user-data.txt +10 -0
  246. teuthology-1.2.0/teuthology/task/buildpackages/centos-7.2-user-data.txt +10 -0
  247. teuthology-1.2.0/teuthology/task/buildpackages/centos-7.3-user-data.txt +10 -0
  248. teuthology-1.2.0/teuthology/task/buildpackages/common.sh +169 -0
  249. teuthology-1.2.0/teuthology/task/buildpackages/debian-8.0-user-data.txt +12 -0
  250. teuthology-1.2.0/teuthology/task/buildpackages/make-deb.sh +160 -0
  251. teuthology-1.2.0/teuthology/task/buildpackages/make-rpm.sh +294 -0
  252. teuthology-1.2.0/teuthology/task/buildpackages/opensuse-15.0-user-data.txt +16 -0
  253. teuthology-1.2.0/teuthology/task/buildpackages/opensuse-42.1-user-data.txt +13 -0
  254. teuthology-1.2.0/teuthology/task/buildpackages/opensuse-42.2-user-data.txt +14 -0
  255. teuthology-1.2.0/teuthology/task/buildpackages/opensuse-42.3-user-data.txt +14 -0
  256. teuthology-1.2.0/teuthology/task/buildpackages/sle-12.1-user-data.txt +14 -0
  257. teuthology-1.2.0/teuthology/task/buildpackages/sle-12.2-user-data.txt +14 -0
  258. teuthology-1.2.0/teuthology/task/buildpackages/sle-12.3-user-data.txt +14 -0
  259. teuthology-1.2.0/teuthology/task/buildpackages/sle-15.0-user-data.txt +14 -0
  260. teuthology-1.2.0/teuthology/task/buildpackages/ubuntu-12.04-user-data.txt +10 -0
  261. teuthology-1.2.0/teuthology/task/buildpackages/ubuntu-14.04-user-data.txt +10 -0
  262. teuthology-1.2.0/teuthology/task/buildpackages/ubuntu-16.04-user-data.txt +10 -0
  263. teuthology-1.2.0/teuthology/task/buildpackages/user-data.txt +10 -0
  264. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/buildpackages.py +2 -2
  265. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/ceph_ansible.py +13 -6
  266. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/cephmetrics.py +2 -1
  267. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/clock.py +33 -14
  268. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/exec.py +18 -0
  269. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/hadoop.py +2 -2
  270. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/__init__.py +29 -7
  271. teuthology-1.2.0/teuthology/task/install/bin/adjust-ulimits +16 -0
  272. teuthology-1.2.0/teuthology/task/install/bin/daemon-helper +114 -0
  273. teuthology-1.2.0/teuthology/task/install/bin/stdin-killer +263 -0
  274. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/deb.py +1 -1
  275. teuthology-1.2.0/teuthology/task/install/packages.yaml +37 -0
  276. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/rpm.py +17 -5
  277. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/util.py +3 -3
  278. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/__init__.py +41 -10
  279. teuthology-1.2.0/teuthology/task/internal/edit_sudoers.sh +10 -0
  280. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/lock_machines.py +2 -9
  281. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/redhat.py +31 -1
  282. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/syslog.py +31 -8
  283. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/kernel.py +152 -145
  284. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/lockfile.py +1 -1
  285. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/mpi.py +10 -10
  286. teuthology-1.2.0/teuthology/task/pcp.j2 +15 -0
  287. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/pcp.py +1 -1
  288. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/selinux.py +16 -8
  289. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/ssh_keys.py +4 -4
  290. teuthology-1.2.0/teuthology/task/tests/__init__.py +170 -0
  291. teuthology-1.2.0/teuthology/task/tests/test_fetch_coredumps.py +116 -0
  292. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/tests/test_run.py +4 -4
  293. teuthology-1.2.0/teuthology/templates/email-sleep-before-teardown.jinja2 +10 -0
  294. teuthology-1.2.0/teuthology/templates/rocketchat-sleep-before-teardown.jinja2 +6 -0
  295. teuthology-1.2.0/teuthology/test/__init__.py +9 -0
  296. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/fake_fs.py +2 -4
  297. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/integration/test_suite.py +20 -20
  298. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/__init__.py +1 -1
  299. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_ansible.py +68 -33
  300. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_ceph_ansible.py +2 -1
  301. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_console_log.py +14 -10
  302. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_install.py +1 -1
  303. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_internal.py +1 -1
  304. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_kernel.py +1 -1
  305. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_pcp.py +2 -2
  306. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_selinux.py +1 -1
  307. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_config.py +4 -4
  308. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_contextutil.py +30 -1
  309. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_describe_tests.py +3 -2
  310. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_email_sleep_before_teardown.py +1 -1
  311. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_exit.py +2 -9
  312. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_get_distro.py +1 -1
  313. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_get_distro_version.py +3 -3
  314. teuthology-1.2.0/teuthology/test/test_imports.py +31 -0
  315. teuthology-1.2.0/teuthology/test/test_kill.py +46 -0
  316. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_misc.py +18 -29
  317. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_packaging.py +136 -105
  318. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_repo_utils.py +48 -23
  319. teuthology-1.2.0/teuthology/test/test_report.py +86 -0
  320. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_results.py +1 -1
  321. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_run.py +14 -9
  322. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_vps_os_vers_parameter_checking.py +1 -1
  323. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/timer.py +3 -3
  324. teuthology-1.2.0/teuthology/util/__init__.py +0 -0
  325. teuthology-1.2.0/teuthology/util/loggerfile.py +19 -0
  326. teuthology-1.2.0/teuthology/util/scanner.py +159 -0
  327. teuthology-1.2.0/teuthology/util/sentry.py +52 -0
  328. teuthology-1.2.0/teuthology/util/test/files/test_unit_test.xml +7 -0
  329. teuthology-1.2.0/teuthology/util/test/files/test_valgrind.xml +31 -0
  330. teuthology-1.2.0/teuthology/util/test/test_scanner.py +191 -0
  331. teuthology-1.2.0/teuthology/util/test/test_time.py +54 -0
  332. teuthology-1.2.0/teuthology/util/time.py +52 -0
  333. teuthology-1.2.0/teuthology.egg-info/PKG-INFO +89 -0
  334. teuthology-1.2.0/teuthology.egg-info/SOURCES.txt +422 -0
  335. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology.egg-info/entry_points.txt +3 -2
  336. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology.egg-info/requires.txt +40 -28
  337. teuthology-1.2.0/tox.ini +82 -0
  338. teuthology-1.2.0/update-requirements.sh +3 -0
  339. teuthology-1.2.0/watch-suite.sh +4 -0
  340. teuthology-1.1.0/PKG-INFO +0 -33
  341. teuthology-1.1.0/requirements.txt +0 -336
  342. teuthology-1.1.0/scripts/dispatcher.py +0 -33
  343. teuthology-1.1.0/scripts/nuke.py +0 -47
  344. teuthology-1.1.0/scripts/results.py +0 -24
  345. teuthology-1.1.0/scripts/worker.py +0 -37
  346. teuthology-1.1.0/setup.cfg +0 -4
  347. teuthology-1.1.0/setup.py +0 -138
  348. teuthology-1.1.0/teuthology/dispatcher/__init__.py +0 -190
  349. teuthology-1.1.0/teuthology/nuke/__init__.py +0 -361
  350. teuthology-1.1.0/teuthology/nuke/actions.py +0 -456
  351. teuthology-1.1.0/teuthology/openstack/openstack-teuthology.cron +0 -2
  352. teuthology-1.1.0/teuthology/orchestra/test/test_connection.py +0 -106
  353. teuthology-1.1.0/teuthology/task/tests/__init__.py +0 -110
  354. teuthology-1.1.0/teuthology/test/test_nuke.py +0 -290
  355. teuthology-1.1.0/teuthology/test/test_report.py +0 -77
  356. teuthology-1.1.0/teuthology/test/test_worker.py +0 -303
  357. teuthology-1.1.0/teuthology/worker.py +0 -354
  358. teuthology-1.1.0/teuthology.egg-info/PKG-INFO +0 -33
  359. teuthology-1.1.0/teuthology.egg-info/SOURCES.txt +0 -217
  360. {teuthology-1.1.0 → teuthology-1.2.0}/README.rst +0 -0
  361. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/__init__.py +0 -0
  362. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/kill.py +0 -0
  363. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/ls.py +0 -0
  364. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/prune_logs.py +0 -0
  365. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/queue.py +0 -0
  366. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/reimage.py +0 -0
  367. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/report.py +0 -0
  368. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/run.py +0 -0
  369. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/updatekeys.py +0 -0
  370. {teuthology-1.1.0 → teuthology-1.2.0}/scripts/wait.py +0 -0
  371. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/exit.py +0 -0
  372. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/job_status.py +0 -0
  373. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/__init__.py +0 -0
  374. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/test/__init__.py +0 -0
  375. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/test/test_lock.py +0 -0
  376. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/util.py +0 -0
  377. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/archive-key +0 -0
  378. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/archive-key.pub +0 -0
  379. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-centos-6.5-user-data.txt +0 -0
  380. /teuthology-1.1.0/teuthology/openstack/openstack-ubuntu-14.04-user-data.txt → /teuthology-1.2.0/teuthology/openstack/openstack-debian-7.0-user-data.txt +0 -0
  381. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-teuthology.init +0 -0
  382. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-ubuntu-12.04-user-data.txt +0 -0
  383. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-user-data.txt +0 -0
  384. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/setup-openstack.sh +0 -0
  385. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/test/__init__.py +0 -0
  386. /teuthology-1.1.0/teuthology/orchestra/__init__.py → /teuthology-1.2.0/teuthology/openstack/test/suites/noop/+ +0 -0
  387. /teuthology-1.1.0/teuthology/orchestra/test/__init__.py → /teuthology-1.2.0/teuthology/openstack/test/suites/nuke/+ +0 -0
  388. {teuthology-1.1.0/teuthology/orchestra/test/integration → teuthology-1.2.0/teuthology/orchestra}/__init__.py +0 -0
  389. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/__init__.py +0 -0
  390. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/group.py +0 -0
  391. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/monkey.py +0 -0
  392. {teuthology-1.1.0/teuthology → teuthology-1.2.0/teuthology/orchestra}/test/__init__.py +0 -0
  393. {teuthology-1.1.0/teuthology → teuthology-1.2.0/teuthology/orchestra}/test/integration/__init__.py +0 -0
  394. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_systemd.py +0 -0
  395. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/util.py +0 -0
  396. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/parallel.py +0 -0
  397. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/cloud/__init__.py +0 -0
  398. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/cloud/base.py +0 -0
  399. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/prune.py +0 -0
  400. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/reimage.py +0 -0
  401. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/safepath.py +0 -0
  402. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/args.py +0 -0
  403. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/background_exec.py +0 -0
  404. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/common_fs_utils.py +0 -0
  405. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/console_log.py +0 -0
  406. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/dump_ctx.py +0 -0
  407. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/full_sequential.py +0 -0
  408. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/full_sequential_finally.py +0 -0
  409. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/redhat.py +0 -0
  410. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/interactive.py +0 -0
  411. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/check_lock.py +0 -0
  412. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/git_ignore_ssl.py +0 -0
  413. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/vm_setup.py +0 -0
  414. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/iscsi.py +0 -0
  415. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/knfsd.py +0 -0
  416. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/localdir.py +0 -0
  417. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/loop.py +0 -0
  418. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/nfs.py +0 -0
  419. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/nop.py +0 -0
  420. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/parallel.py +0 -0
  421. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/parallel_example.py +0 -0
  422. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/pexec.py +0 -0
  423. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/print.py +0 -0
  424. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/proc_thrasher.py +0 -0
  425. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/sequential.py +0 -0
  426. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/sleep.py +0 -0
  427. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/tasktest.py +0 -0
  428. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/tests/test_locking.py +0 -0
  429. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/timer.py +0 -0
  430. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/fake_archive.py +0 -0
  431. {teuthology-1.1.0/teuthology/util → teuthology-1.2.0/teuthology/test/integration}/__init__.py +0 -0
  432. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_get_multi_machine_types.py +0 -0
  433. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_job_status.py +0 -0
  434. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_ls.py +0 -0
  435. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_parallel.py +0 -0
  436. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_safepath.py +0 -0
  437. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_schedule.py +0 -0
  438. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_scrape.py +0 -0
  439. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_timer.py +0 -0
  440. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/util/compat.py +0 -0
  441. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/util/flock.py +0 -0
  442. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology.egg-info/dependency_links.txt +0 -0
  443. {teuthology-1.1.0 → teuthology-1.2.0}/teuthology.egg-info/top_level.txt +0 -0
@@ -0,0 +1,2 @@
1
+ [run]
2
+ omit = */test/*
@@ -0,0 +1,3 @@
1
+ venv
2
+ virtualenv
3
+ .tox
@@ -0,0 +1,40 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ test:
11
+ name: CI on python${{ matrix.python }} via ${{ matrix.os }}
12
+ runs-on: ${{ matrix.os }}
13
+ strategy:
14
+ matrix:
15
+ include:
16
+ - os: ubuntu-20.04
17
+ python: "3.10"
18
+ - os: ubuntu-22.04
19
+ python: "3.10"
20
+ - os: ubuntu-22.04
21
+ python: "3.11"
22
+ - os: ubuntu-24.04
23
+ python: "3.12"
24
+ steps:
25
+ - 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
+ - name: Setup Python
30
+ uses: actions/setup-python@v5
31
+ with:
32
+ python-version: ${{ matrix.python }}
33
+ - name: Install tox
34
+ run: pip install tox
35
+ - name: Run flake8
36
+ run: tox -e flake8
37
+ - name: Run unit tests
38
+ run: tox -e py3
39
+ - name: Run docs build
40
+ run: tox -e docs
@@ -0,0 +1,55 @@
1
+ name: dependencies
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ upgrade:
11
+ name: Test dependencies
12
+ runs-on: ${{ matrix.os }}
13
+ strategy:
14
+ matrix:
15
+ include:
16
+ - os: ubuntu-20.04
17
+ python: "3.10"
18
+ - os: ubuntu-22.04
19
+ python: "3.10"
20
+ - os: ubuntu-22.04
21
+ python: "3.11"
22
+ steps:
23
+ - name: Add deadsnakes PPA
24
+ if: matrix.os == 'ubuntu-20.04'
25
+ run: sudo add-apt-repository --yes ppa:deadsnakes/ppa
26
+ - name: Set up Python
27
+ uses: actions/setup-python@v5
28
+ with:
29
+ python-version: ${{ matrix.python }}
30
+ - name: Checkout default branch
31
+ uses: actions/checkout@v4
32
+ with:
33
+ ref: main
34
+ path: teuthology
35
+ - name: virtualenv
36
+ run: |
37
+ pip install --user virtualenv
38
+ virtualenv ./virtualenv
39
+ cd ./virtualenv/lib/python*
40
+ touch no-global-site-packages.txt
41
+ working-directory: ./teuthology
42
+ - name: Initial bootstrap
43
+ run: ./bootstrap install
44
+ working-directory: ./teuthology
45
+ - name: Move initial repository
46
+ run: mv teuthology teuthology.orig
47
+ - name: Checkout desired ref
48
+ uses: actions/checkout@v4
49
+ with:
50
+ path: teuthology
51
+ - name: Move virtualenv to new checkout
52
+ run: mv ./teuthology.orig/virtualenv ./teuthology/
53
+ - name: Re-run bootstrap
54
+ run: ./bootstrap install
55
+ working-directory: ./teuthology
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: dev_container
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ docker:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Checkout
14
+ 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
+ - name: Login to Quay.io
20
+ uses: docker/login-action@v3
21
+ with:
22
+ registry: quay.io
23
+ username: ${{ secrets.QUAY_USERNAME }}
24
+ password: ${{ secrets.QUAY_ROBOT_TOKEN }}
25
+ - name: Build and push
26
+ uses: docker/build-push-action@v5
27
+ env:
28
+ QUAY_URI: quay.io/ceph-infra/teuthology-dev
29
+ QUAY_TAG: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
30
+ with:
31
+ context: .
32
+ file: containers/teuthology-dev/Dockerfile
33
+ platforms: linux/amd64,linux/arm64
34
+ push: true
35
+ tags: ${{ env.QUAY_URI }}:${{ env.QUAY_TAG }}
36
+ outputs: type=image,name=target
37
+
@@ -0,0 +1,12 @@
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: Test using docker-compose
11
+ run: ./start.sh
12
+ working-directory: ./docs/docker-compose
@@ -0,0 +1,32 @@
1
+ *~
2
+ .#*
3
+ ## the next line needs to start with a backslash to avoid looking like
4
+ ## a comment
5
+ \#*#
6
+ .*.swp
7
+
8
+ *.pyc
9
+ *.pyo
10
+ .tox
11
+
12
+ /*.egg-info
13
+ /virtualenv
14
+ /build
15
+ /*.yaml
16
+ docs/build
17
+
18
+ .ropeproject
19
+ .coverage
20
+
21
+ # autogenerated docs from sphinx-apidoc
22
+ docs/modules.rst
23
+ docs/teuthology.rst
24
+ docs/teuthology.*.rst
25
+
26
+ # PyCharm
27
+ .idea
28
+
29
+ # vscode
30
+ .vscode/
31
+
32
+ .ansible
@@ -0,0 +1,3 @@
1
+ teuthology:
2
+ tags: [ ceph-workbench ]
3
+ script: "git clean -ffqdx ; ./bootstrap install ; unset OS_AUTH_URL ; source virtualenv/bin/activate ; pip install tox ; tox"
@@ -0,0 +1,20 @@
1
+ ---
2
+ # Read the Docs configuration file
3
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4
+
5
+ version: 2
6
+ formats: []
7
+ build:
8
+ os: ubuntu-22.04
9
+ tools:
10
+ python: "3.10"
11
+ python:
12
+ install:
13
+ - method: pip
14
+ path: .
15
+ extra_requirements:
16
+ - orchestra
17
+ - requirements: docs/requirements.txt
18
+ sphinx:
19
+ builder: html
20
+ configuration: docs/conf.py
@@ -0,0 +1,17 @@
1
+ env: HOME=/home/travis
2
+
3
+ sudo: required
4
+ dist: trusty
5
+
6
+ before_install:
7
+ - sudo apt-get -qq update
8
+ - ./bootstrap install
9
+
10
+ language: python
11
+ python:
12
+ - 2.7
13
+
14
+ install:
15
+ - pip install tox
16
+
17
+ script: tox -rv
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2014 Red Hat, Inc.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
@@ -1,2 +1,4 @@
1
1
  include *.rst
2
2
  include requirements.txt
3
+ include tox.ini
4
+ include pytest.ini
@@ -0,0 +1,89 @@
1
+ Metadata-Version: 2.1
2
+ Name: teuthology
3
+ Version: 1.2.0
4
+ Summary: Ceph test framework
5
+ Home-page: https://github.com/ceph/teuthology
6
+ Author: Ceph Community
7
+ License: MIT
8
+ Keywords: teuthology,test,ceph,cluster
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Natural Language :: English
12
+ Classifier: Operating System :: POSIX :: Linux
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: Implementation :: CPython
19
+ Classifier: Topic :: Software Development :: Quality Assurance
20
+ Classifier: Topic :: Software Development :: Testing
21
+ Classifier: Topic :: System :: Distributed Computing
22
+ Classifier: Topic :: System :: Filesystems
23
+ Requires-Python: >=3.10
24
+ Description-Content-Type: text/x-rst
25
+ License-File: LICENSE
26
+ Requires-Dist: PyYAML
27
+ Requires-Dist: ansible-core==2.16.6
28
+ Requires-Dist: apache-libcloud
29
+ Requires-Dist: backports.ssl-match-hostname
30
+ Requires-Dist: beanstalkc3>=0.4.0
31
+ Requires-Dist: configobj
32
+ Requires-Dist: configparser
33
+ Requires-Dist: cryptography==41.0.7
34
+ Requires-Dist: docopt
35
+ Requires-Dist: gevent
36
+ Requires-Dist: httplib2
37
+ Requires-Dist: humanfriendly
38
+ Requires-Dist: lupa
39
+ Requires-Dist: lxml
40
+ Requires-Dist: ndg-httpsclient
41
+ Requires-Dist: netaddr
42
+ Requires-Dist: paramiko
43
+ Requires-Dist: pexpect
44
+ Requires-Dist: pip-tools
45
+ Requires-Dist: prettytable
46
+ Requires-Dist: prometheus_client>=0.16.0
47
+ Requires-Dist: psutil>=2.1.0
48
+ Requires-Dist: pyasn1
49
+ Requires-Dist: pynacl>=1.5.0
50
+ Requires-Dist: pyopenssl>=0.13
51
+ Requires-Dist: python-dateutil
52
+ Requires-Dist: requests>2.13.0
53
+ Requires-Dist: sentry-sdk
54
+ Requires-Dist: types-psutil
55
+ Requires-Dist: urllib3<1.27,>=1.25.4
56
+ Provides-Extra: manhole
57
+ Requires-Dist: manhole; extra == "manhole"
58
+ Provides-Extra: rocketchat
59
+ Requires-Dist: rocket-python>=1.2.15; extra == "rocketchat"
60
+ Provides-Extra: sentry
61
+ Requires-Dist: sentry-sdk; extra == "sentry"
62
+ Provides-Extra: test
63
+ Requires-Dist: PyJWT; extra == "test"
64
+ Requires-Dist: boto>=2.0b4; extra == "test"
65
+ Requires-Dist: boto3; extra == "test"
66
+ Requires-Dist: coverage; extra == "test"
67
+ Requires-Dist: ipy; extra == "test"
68
+ Requires-Dist: mock; extra == "test"
69
+ Requires-Dist: pynose; extra == "test"
70
+ Requires-Dist: pytest; extra == "test"
71
+ Requires-Dist: pytest-cov; extra == "test"
72
+ Requires-Dist: toml; extra == "test"
73
+ Requires-Dist: tox; extra == "test"
74
+ Requires-Dist: xmltodict; extra == "test"
75
+ Provides-Extra: openstack
76
+ Requires-Dist: python-openstackclient; extra == "openstack"
77
+ Requires-Dist: python-novaclient; extra == "openstack"
78
+
79
+ ===================================================
80
+ `Teuthology` -- The Ceph integration test framework
81
+ ===================================================
82
+
83
+
84
+ Welcome! Teuthology's documentation is primarily hosted at `docs.ceph.com
85
+ <https://docs.ceph.com/projects/teuthology/>`__.
86
+
87
+ You can also look at docs `inside this repository <docs/>`__, but note that
88
+ GitHub's `RST <http://docutils.sourceforge.net/rst.html>`__ rendering is quite
89
+ limited. Mainly that means that links between documents will be broken.
@@ -0,0 +1,4 @@
1
+ [defaults]
2
+ # Store collections in this directory. This is to avoid potential compatibility
3
+ # issues between differently-versioned ansible processes.
4
+ collections_path = .ansible
@@ -0,0 +1,13 @@
1
+ # For beanstalkd 1.12 use edge branch
2
+ #FROM alpine:edge
3
+
4
+ FROM alpine:3.12.3
5
+
6
+ MAINTAINER Kyrylo Shatskyy <kyrylo.shatskyy@suse.com>
7
+
8
+ RUN apk update && apk add beanstalkd beanstalkd-doc
9
+
10
+ ENV BEANSTALK_ADDR "0.0.0.0"
11
+ ENV BEANSTALK_PORT "11300"
12
+
13
+ CMD /usr/bin/beanstalkd -V -l $BEANSTALK_ADDR -p $BEANSTALK_PORT
@@ -0,0 +1,251 @@
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" && 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
+
30
+ case "$(uname -s)" in
31
+ Linux)
32
+ if command -v lsb_release; then
33
+ OS=$(lsb_release --id --short)
34
+ else
35
+ . /etc/os-release
36
+ OS=$(echo $NAME | tr -d ' ')
37
+ fi
38
+ case "$OS" in
39
+ Ubuntu|Debian|LinuxMint)
40
+ deps=(qemu-utils python3-dev libssl-dev python3-pip python3-wheel $PYTHON-venv libev-dev libvirt-dev libffi-dev libyaml-dev)
41
+ for package in ${deps[@]}; do
42
+ if [ "$(dpkg --status -- $package|sed -n 's/^Status: //p')" != "install ok installed" ]; then
43
+ # add a space after old values
44
+ missing="${missing:+$missing }$package"
45
+ fi
46
+ done
47
+ if [ -n "$missing" ]; then
48
+ echo "$0: missing required packages:" 1>&2
49
+ echo "$missing"
50
+ if [ "$install" = true ]; then
51
+ echo "Updating metadata..."
52
+ sudo apt-get update
53
+ echo "Installing missing packages..."
54
+ sudo apt-get -y install $missing
55
+ else
56
+ echo "Please install missing packages or run './bootstrap install' if you have sudo"
57
+ echo "sudo apt-get -y install $missing"
58
+ exit 1
59
+ fi
60
+ fi
61
+ ;;
62
+ RedHatEnterpriseWorkstation|RedHatEnterpriseServer|RedHatEnterprise|CentOS)
63
+ deps=(python39-pip python39-devel mariadb-devel libev-devel libvirt-devel libffi-devel)
64
+ for package in ${deps[@]}; do
65
+ if ! rpm -q --whatprovides $package ; then
66
+ missing="${missing:+$missing }$package"
67
+ fi
68
+ done
69
+ if [ -n "$missing" ]; then
70
+ echo "$0: missing required packages:" 1>&2
71
+ echo "$missing"
72
+ if [ "$install" = true ]; then
73
+ echo "Installing missing packages..."
74
+ sudo yum -y install $missing
75
+ else
76
+ echo "Please install missing packages or run './bootstrap install' if you have sudo"
77
+ echo "sudo yum -y install $missing"
78
+ exit 1
79
+ fi
80
+ fi
81
+ ;;
82
+ CentOSStream)
83
+ PYTHON=python3.12
84
+ deps=($PYTHON-pip $PYTHON-devel)
85
+ for package in ${deps[@]}; do
86
+ if ! rpm -q --whatprovides $package ; then
87
+ missing="${missing:+$missing }$package"
88
+ fi
89
+ done
90
+ if [ -n "$missing" ]; then
91
+ echo "$0: missing required packages:" 1>&2
92
+ echo "$missing"
93
+ if [ "$install" = true ]; then
94
+ echo "Installing missing packages..."
95
+ sudo yum -y install $missing
96
+ else
97
+ echo "Please install missing packages or run './bootstrap install' if you have sudo"
98
+ echo "sudo yum -y install $missing"
99
+ exit 1
100
+ fi
101
+ fi
102
+ ;;
103
+ AlmaLinux|RockyLinux)
104
+ PYTHON=python3.12
105
+ deps=($PYTHON-pip $PYTHON-devel libev-devel libvirt-devel libffi-devel)
106
+ for package in ${deps[@]}; do
107
+ if ! rpm -q --whatprovides $package; then
108
+ missing="${missing:+$missing }$package"
109
+ fi
110
+ done
111
+ if [ -n "$missing" ]; then
112
+ echo "$0: missing required packages:" 1>&2
113
+ echo "$missing"
114
+ if [ "$install" = true ]; then
115
+ echo "Installing missing packages..."
116
+ sudo yum -y install $missing
117
+ else
118
+ echo "Please install missing packages or run './bootstrap install' if you have sudo"
119
+ echo "sudo yum -y install $missing"
120
+ exit 1
121
+ fi
122
+ fi
123
+ ;;
124
+ Fedora|FedoraLinux)
125
+ PYTHON=python3.12
126
+ deps=($PYTHON-pip $PYTHON-devel)
127
+ deps=($PYTHON-pip $PYTHON-devel libev-devel libvirt-devel libffi-devel)
128
+ for package in ${deps[@]}; do
129
+ if ! rpm -q --whatprovides $package; then
130
+ missing="${missing:+$missing }$package"
131
+ fi
132
+ done
133
+ fedora_release=$(lsb_release -rs)
134
+ package_manager=dnf
135
+ if [ $fedora_release -lt 23 ]; then
136
+ package_manager=yum
137
+ fi
138
+ if [ -n "$missing" ]; then
139
+ echo "$0: missing required packages:" 1>&2
140
+ echo "$missing"
141
+ if [ "$install" = true ]; then
142
+ echo "Installing missing packages..."
143
+ sudo $package_manager -y install $missing
144
+ else
145
+ echo "Please install missing packages or run './bootstrap install' if you have sudo"
146
+ echo "sudo $package_manager -y install $missing"
147
+ exit 1
148
+ fi
149
+ fi
150
+ ;;
151
+ "openSUSE project"|"SUSE LINUX"|"openSUSE"|"openSUSELeap"|"openSUSETumbleweed")
152
+ PYTHON=python3.12
153
+ deps=(python312-pip python312-devel python312 libev-devel libvirt-devel libffi-devel)
154
+ for package in ${deps[@]}; do
155
+ if ! rpm -q --whatprovides $package; then
156
+ if [ "$(rpm -q --whatprovides $package)" == "no package provides $package" ]; then
157
+ missing="${missing:+$missing }$package"
158
+ fi
159
+ fi
160
+ done
161
+ if [ -n "$missing" ]; then
162
+ echo "$0: missing required packages, please install them:" 1>&2
163
+ echo "sudo zypper install $missing"
164
+ exit 1
165
+ fi
166
+ ;;
167
+ *)
168
+ echo "This script does not support your Linux distribution yet. Patches encouraged!"
169
+ exit 1
170
+ ;;
171
+ esac
172
+ ;;
173
+ Darwin)
174
+ if ! brew --version &>/dev/null; then
175
+ echo "You need Homebrew: http://brew.sh/"
176
+ exit 1
177
+ fi
178
+ for keg in python libvirt libev libffi; do
179
+ if brew list $keg >/dev/null 2>&1; then
180
+ echo "Found $keg"
181
+ else
182
+ if [ "$install" = true ]; then
183
+ brew install $keg
184
+ else
185
+ missing="${missing:+$missing }$keg"
186
+ echo "Please install missing packages or run './bootstrap install':"
187
+ echo "brew install $missing"
188
+ exit 1
189
+ fi
190
+ fi
191
+ done
192
+ ;;
193
+ *)
194
+ echo "This script does not support your OS yet. Patches encouraged!"
195
+ exit 1
196
+ ;;
197
+ esac
198
+
199
+ PYTHON_BIN=$(command -v $PYTHON)
200
+ if [ -z $PYTHON_BIN -o ! -e $PYTHON_BIN -o ! -x $PYTHON_BIN ]; then
201
+ echo "Cannot find $PYTHON!"
202
+ exit 1
203
+ fi
204
+ PYTHON_VER_OUT=$($PYTHON_BIN --version)
205
+
206
+ VENV=${VENV:-"./virtualenv"}
207
+ # If the venv was set to use system site-packages, fix that
208
+ if [ -f "$VENV/pyvenv.cfg" ]; then
209
+ sed -i'' -e 's/\(include-system-site-packages\s*=\s*\)true/\1false/g' $VENV/pyvenv.cfg
210
+ fi
211
+
212
+ # Attempt to force a UTF-8 locale without being specific to English
213
+ export LANG=${LANG:-C.UTF-8}
214
+ (echo $LANG | grep -qi utf-8) || export LC_ALL=$LANG.UTF-8
215
+
216
+ if [ -z "$NO_CLOBBER" ] && \
217
+ [ ! -e "$VENV/bin/pip" -o ! -e "$VENV/bin/$PYTHON" ] || \
218
+ [ "${PYTHON_VER_OUT}" != "$($VENV/bin/$PYTHON --version)" ] \
219
+ ; then
220
+ rm -rf virtualenv
221
+ fi
222
+
223
+ if [ -z "$NO_CLOBBER" ] || [ ! -e $VENV ]; then
224
+ $PYTHON_BIN -m venv $VENV
225
+ fi
226
+
227
+ $VENV/bin/pip install packaging
228
+
229
+ # It is impossible to upgrade ansible from 2.9 to 2.10 via pip.
230
+ # See https://docs.ansible.com/ansible/devel/porting_guides/porting_guide_2.10.html#known-issues
231
+ if [ -f "$VENV/bin/ansible" ]; then
232
+ uninstall_ansible=$($VENV/bin/python3 -c "import ansible; from packaging.version import parse; print(parse(ansible.__version__) < parse('2.10.0'))")
233
+ if [ "$uninstall_ansible" = "True" ]; then
234
+ $VENV/bin/pip uninstall -y ansible
235
+ fi
236
+ fi
237
+
238
+ # First, upgrade pip
239
+ $VENV/bin/pip install --upgrade pip
240
+
241
+ # See https://github.com/pypa/pip/issues/8559
242
+ $VENV/bin/pip install -r requirements.txt --use-pep517
243
+
244
+ # By default, install teuthology in editable mode
245
+ $VENV/bin/pip install ${PIP_INSTALL_FLAGS:---editable '.[test]'}
246
+
247
+ # Check to make sure requirements are met
248
+ $VENV/bin/pip check
249
+
250
+ # Install ansible collections
251
+ $VENV/bin/ansible-galaxy install -r requirements.yml
@@ -0,0 +1,61 @@
1
+ #!/bin/sh -x
2
+ set -e
3
+
4
+ IMAGE_URL=http://cloud-images.ubuntu.com/releases/precise/release/ubuntu-12.04-server-cloudimg-amd64-disk1.img
5
+
6
+ wget -O base.qcow2 $IMAGE_URL
7
+
8
+ image=base.raw
9
+ qemu-img convert -O raw base.qcow2 $image
10
+ rm -f base.qcow2
11
+
12
+ # Note: this assumes that sector size is 512, and that there's only one
13
+ # partition. very brittle.
14
+ START_SECT=$(fdisk -lu $image | grep ^$image | awk '{print $3}')
15
+ START_BYTE=$(echo "$START_SECT * 512" | bc)
16
+
17
+ root=/tmp/$$
18
+
19
+ cleanup() {
20
+ sudo chroot $root rm -f /etc/resolv.conf || true
21
+ sudo chroot $root ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf || true
22
+ sudo umount $root/proc || true
23
+ sudo umount $root/sys || true
24
+ sudo umount $root/dev/pts || true
25
+ sudo umount $root
26
+ sudo rmdir $root
27
+ }
28
+ trap cleanup INT TERM EXIT
29
+
30
+ sudo mkdir $root
31
+ sudo mount -o loop,offset=$START_BYTE $image $root
32
+
33
+ # set up chroot
34
+ sudo mount -t proc proc $root/proc
35
+ sudo mount -t sysfs sysfs $root/sys
36
+ sudo mount -t devpts devptr $root/dev/pts
37
+
38
+ # set up network access
39
+ sudo chroot $root rm /etc/resolv.conf
40
+ sudo cp /etc/resolv.conf $root/etc/resolv.conf
41
+
42
+ # packages
43
+ # These should be kept in sync with ceph-qa-chef.git/cookbooks/ceph-qa/default.rb
44
+ sudo chroot $root apt-get -y --force-yes install iozone3 bonnie++ dbench \
45
+ tiobench build-essential attr libtool automake gettext uuid-dev \
46
+ libacl1-dev bc xfsdump dmapi xfslibs-dev
47
+
48
+ # install ltp without ltp-network-test, so we don't pull in xinetd and
49
+ # a bunch of other unnecessary stuff
50
+ sudo chroot $root apt-get -y --force-yes --no-install-recommends install ltp-kernel-test
51
+
52
+ # add 9p fs support
53
+ sudo chroot $root apt-get -y --force-yes install linux-image-extra-virtual
54
+
55
+ cleanup
56
+ trap - INT TERM EXIT
57
+
58
+ qemu-img convert -O qcow2 $image output.qcow2
59
+ rm -f $image
60
+
61
+ exit 0