molecule-plugins 23.5.3__tar.gz → 23.7.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 (243) hide show
  1. molecule_plugins-23.7.0/.github/workflows/ack.yml +15 -0
  2. molecule_plugins-23.7.0/.github/workflows/push.yml +13 -0
  3. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/.github/workflows/release.yml +3 -2
  4. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/.github/workflows/tox.yml +5 -3
  5. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/.gitignore +7 -0
  6. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/PKG-INFO +31 -7
  7. molecule_plugins-23.7.0/README.md +45 -0
  8. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/conftest.py +4 -2
  9. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/doc/openstack/platforms.rst +10 -1
  10. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/molecule/test-podman/molecule.yml +1 -1
  11. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/pyproject.toml +12 -9
  12. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/requirements.yml +1 -1
  13. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/_version.py +2 -2
  14. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/driver.py +4 -4
  15. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/driver.py +8 -3
  16. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/create.yml +13 -0
  17. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/validate-dockerfile.yml +1 -1
  18. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/create.yml +2 -0
  19. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/driver.py +5 -5
  20. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/driver.py +4 -4
  21. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/tasks/create_linux_instance.yml +5 -0
  22. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/tasks/create_windows_instance.yml +5 -0
  23. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/driver.py +2 -0
  24. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/create.yml +2 -0
  25. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/driver.py +8 -1
  26. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/playbooks/create.yml +4 -1
  27. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/playbooks/validate-dockerfile.yml +2 -3
  28. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/driver.py +4 -4
  29. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/modules/vagrant.py +72 -67
  30. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/PKG-INFO +31 -7
  31. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/SOURCES.txt +33 -31
  32. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/requires.txt +4 -2
  33. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/functional/test_azure.py +10 -6
  34. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/containers/functional/test_containers.py +5 -3
  35. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/scenarios/env-substitution/molecule/default/molecule.yml +1 -1
  36. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/test_func.py +13 -8
  37. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/functional/test_ec2.py +7 -4
  38. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/functional/test_func.py +7 -4
  39. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/INSTALL.md +4 -4
  40. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/INSTALL.md +4 -4
  41. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/test_func.py +7 -4
  42. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/podman/test_func.py +13 -6
  43. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/functional/test_func.py +16 -11
  44. molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/box_url/molecule.yml +15 -0
  45. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/hostname/molecule.yml +3 -3
  46. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/multi-node/molecule.yml +2 -8
  47. molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/vagrant_root/converge.yml +10 -0
  48. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/tox.ini +1 -0
  49. molecule-plugins-23.5.3/.github/workflows/ack.yml +0 -9
  50. molecule-plugins-23.5.3/.github/workflows/push.yml +0 -12
  51. molecule-plugins-23.5.3/README.md +0 -22
  52. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/.ansible-lint +0 -0
  53. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/.ansible-lint-ignore +0 -0
  54. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/.flake8 +0 -0
  55. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/.github/dependabot.yml +0 -0
  56. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/.github/release-drafter.yml +0 -0
  57. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/.pre-commit-config.yaml +0 -0
  58. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/LICENSE +0 -0
  59. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/MANIFEST.in +0 -0
  60. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/bindep.txt +0 -0
  61. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/doc/ec2/README.rst +0 -0
  62. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/doc/ec2/platforms.rst +0 -0
  63. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/doc/openstack/README.rst +0 -0
  64. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/doc/vagrant/README.rst +0 -0
  65. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/molecule/test-podman/converge.yml +0 -0
  66. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/molecule/test-podman/verify.yml +0 -0
  67. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/mypy.ini +0 -0
  68. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/pytest.ini +0 -0
  69. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/setup.cfg +0 -0
  70. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/__init__.py +0 -0
  71. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/__init__.py +0 -0
  72. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/cookiecutter.json +0 -0
  73. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/INSTALL.rst +0 -0
  74. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  75. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/create.yml +0 -0
  76. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/destroy.yml +0 -0
  77. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/containers/__init__.py +0 -0
  78. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/containers/cookiecutter/cookiecutter.json +0 -0
  79. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/containers/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  80. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/containers/driver.py +0 -0
  81. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/__init__.py +0 -0
  82. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/cookiecutter/cookiecutter.json +0 -0
  83. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  84. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/Dockerfile.j2 +0 -0
  85. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/destroy.yml +0 -0
  86. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/filter_plugins/get_docker_networks.py +0 -0
  87. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/tasks/create_network.yml +0 -0
  88. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/tasks/delete_network.yml +0 -0
  89. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/__init__.py +0 -0
  90. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/cookiecutter.json +0 -0
  91. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/INSTALL.rst +0 -0
  92. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  93. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/destroy.yml +5 -5
  94. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/prepare.yml +0 -0
  95. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/__init__.py +0 -0
  96. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/cookiecutter/cookiecutter.json +0 -0
  97. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  98. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/create.yml +0 -0
  99. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/destroy.yml +0 -0
  100. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/files/windows_auth.py +0 -0
  101. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/handlers/main.yml +0 -0
  102. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/__init__.py +0 -0
  103. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/cookiecutter/cookiecutter.json +0 -0
  104. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  105. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/destroy.yml +0 -0
  106. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/prepare.yml +0 -0
  107. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/tasks/server_addr.yml +0 -0
  108. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/tasks/vars.yml +0 -0
  109. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/__init__.py +0 -0
  110. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/cookiecutter/cookiecutter.json +0 -0
  111. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  112. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/playbooks/Dockerfile.j2 +0 -0
  113. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/playbooks/destroy.yml +0 -0
  114. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/py.typed +0 -0
  115. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/__init__.py +0 -0
  116. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/cookiecutter/cookiecutter.json +0 -0
  117. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/INSTALL.rst +0 -0
  118. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  119. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/modules/__init__.py +0 -0
  120. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/playbooks/create.yml +0 -0
  121. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/playbooks/destroy.yml +0 -0
  122. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/playbooks/prepare.yml +0 -0
  123. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/dependency_links.txt +0 -0
  124. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/entry_points.txt +0 -0
  125. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/top_level.txt +0 -0
  126. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/__init__.py +0 -0
  127. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/functional/__init__.py +0 -0
  128. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/functional/conftest.py +0 -0
  129. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/default/converge.yml +0 -0
  130. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/default/molecule.yml +0 -0
  131. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/default/tests/test_default.py +0 -0
  132. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/converge.yml +0 -0
  133. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/molecule.yml +0 -0
  134. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/prepare.yml +0 -0
  135. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/tests/__init__.py +0 -0
  136. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/tests/test_default.py +0 -0
  137. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/azure/test_driver.py +0 -0
  138. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/containers/__init__.py +0 -0
  139. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/containers/functional/.ansible-lint +0 -0
  140. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/containers/functional/__init__.py +0 -0
  141. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/containers/functional/conftest.py +0 -0
  142. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/containers/scenarios/driver/containers/molecule/default/converge.yml +0 -0
  143. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/containers/scenarios/driver/containers/molecule/default/molecule.yml +0 -0
  144. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/containers/test_driver.py +0 -0
  145. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/__init__.py +0 -0
  146. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/conftest.py +0 -0
  147. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/scenarios/env-substitution/molecule/default/converge.yml +0 -0
  148. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/scenarios/with-context/molecule/default/Dockerfile.j2 +0 -0
  149. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/scenarios/with-context/molecule/default/FOO +0 -0
  150. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/scenarios/with-context/molecule/default/converge.yml +0 -0
  151. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/scenarios/with-context/molecule/default/molecule.yml +0 -0
  152. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/docker/test_driver.py +0 -0
  153. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/__init__.py +0 -0
  154. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/functional/.ansible-lint +0 -0
  155. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/functional/__init__.py +0 -0
  156. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/functional/conftest.py +0 -0
  157. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/default/converge.yml +0 -0
  158. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/default/molecule.yml +0 -0
  159. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/default/prepare.yml +0 -0
  160. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/default/tests/test_default.py +0 -0
  161. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/converge.yml +0 -0
  162. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/molecule.yml +0 -0
  163. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/prepare.yml +0 -0
  164. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/tests/__init__.py +0 -0
  165. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/tests/test_default.py +0 -0
  166. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/ec2/test_driver.py +0 -0
  167. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/__init__.py +0 -0
  168. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/functional/.ansible-lint +0 -0
  169. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/functional/__init__.py +0 -0
  170. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/functional/conftest.py +0 -0
  171. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/converge.yml +0 -0
  172. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/create.yml +0 -0
  173. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/destroy.yml +0 -0
  174. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/files/windows_auth.py +0 -0
  175. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/handlers/main.yml +0 -0
  176. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/molecule.yml +0 -0
  177. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/prepare.yml +0 -0
  178. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/requirements.yml +0 -0
  179. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/tasks/create_linux_instance.yml +0 -0
  180. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/tasks/create_windows_instance.yml +0 -0
  181. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/verify.yml +0 -0
  182. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/converge.yml +0 -0
  183. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/create.yml +0 -0
  184. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/destroy.yml +0 -0
  185. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/files/windows_auth.py +0 -0
  186. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/handlers/main.yml +0 -0
  187. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/molecule.yml +0 -0
  188. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/prepare.yml +0 -0
  189. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/requirements.yml +0 -0
  190. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/tasks/create_linux_instance.yml +0 -0
  191. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/tasks/create_windows_instance.yml +0 -0
  192. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/verify.yml +0 -0
  193. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/gce/test_driver.py +0 -0
  194. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/.ansible-lint +0 -0
  195. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/__init__.py +0 -0
  196. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/conftest.py +0 -0
  197. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/default/converge.yml +0 -0
  198. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/default/molecule.yml +0 -0
  199. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/multiple/converge.yml +0 -0
  200. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/multiple/molecule.yml +0 -0
  201. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/network/converge.yml +0 -0
  202. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/network/molecule.yml +0 -0
  203. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/security_group/converge.yml +0 -0
  204. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/security_group/molecule.yml +0 -0
  205. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/volume/converge.yml +0 -0
  206. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/volume/molecule.yml +0 -0
  207. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/openstack/test_driver.py +0 -0
  208. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/podman/__init__.py +0 -0
  209. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/podman/conftest.py +0 -0
  210. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/test/podman/test_driver.py +0 -0
  211. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/__init__.py +0 -0
  212. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/functional/__init__.py +0 -0
  213. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/functional/conftest.py +0 -0
  214. {molecule-plugins-23.5.3/test/vagrant/scenarios/molecule/config_options → molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/box_url}/converge.yml +0 -0
  215. {molecule-plugins-23.5.3/test/vagrant/scenarios/molecule/default → molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/config_options}/converge.yml +0 -0
  216. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/config_options/molecule.yml +0 -0
  217. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/config_options/verify.yml +0 -0
  218. {molecule-plugins-23.5.3/test/vagrant/scenarios/molecule/hostname → molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/default}/converge.yml +0 -0
  219. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/default/molecule.yml +0 -0
  220. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/default-compat/converge.yml +0 -0
  221. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/default-compat/create.yml +0 -0
  222. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/default-compat/destroy.yml +0 -0
  223. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/default-compat/molecule.yml +0 -0
  224. {molecule-plugins-23.5.3/test/vagrant/scenarios/molecule/invalid → molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/hostname}/converge.yml +0 -0
  225. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/hostname/verify.yml +0 -0
  226. {molecule-plugins-23.5.3/test/vagrant/scenarios/molecule/multi-node → molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/invalid}/converge.yml +0 -0
  227. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/invalid/molecule.yml +0 -0
  228. {molecule-plugins-23.5.3/test/vagrant/scenarios/molecule/network → molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/multi-node}/converge.yml +0 -0
  229. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/multi-node/verify.yml +0 -0
  230. {molecule-plugins-23.5.3/test/vagrant/scenarios/molecule/provider_config_options → molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/network}/converge.yml +0 -0
  231. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/network/molecule.yml +0 -0
  232. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/network/verify.yml +0 -0
  233. {molecule-plugins-23.5.3/test/vagrant/scenarios/molecule/vagrant_root → molecule_plugins-23.7.0/test/vagrant-plugin/scenarios/molecule/provider_config_options}/converge.yml +0 -0
  234. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/provider_config_options/molecule.yml +0 -0
  235. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/provider_config_options/verify.yml +0 -0
  236. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/vagrant_root/molecule.yml +0 -0
  237. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/scenarios/molecule/vagrant_root/verify.yml +0 -0
  238. {molecule-plugins-23.5.3/test/vagrant → molecule_plugins-23.7.0/test/vagrant-plugin}/test_driver.py +0 -0
  239. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/tools/Vagrantfile +0 -0
  240. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/tools/create_testbox.sh +0 -0
  241. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/tools/extract_plugin_names.py +0 -0
  242. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/tools/generate-templates.sh +0 -0
  243. {molecule-plugins-23.5.3 → molecule_plugins-23.7.0}/tools/test-setup.sh +0 -0
@@ -0,0 +1,15 @@
1
+ ---
2
+ # See https://github.com/ansible/team-devtools/blob/main/.github/workflows/ack.yml
3
+ name: ack
4
+
5
+ concurrency:
6
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
7
+ cancel-in-progress: true
8
+
9
+ on:
10
+ pull_request_target:
11
+ types: [opened, labeled, unlabeled, synchronize]
12
+
13
+ jobs:
14
+ ack:
15
+ uses: ansible/team-devtools/.github/workflows/ack.yml@main
@@ -0,0 +1,13 @@
1
+ ---
2
+ # See https://github.com/ansible/team-devtools/blob/main/.github/workflows/push.yml
3
+ name: push
4
+ on:
5
+ push:
6
+ branches:
7
+ - main
8
+ - "releases/**"
9
+ - "stable/**"
10
+
11
+ jobs:
12
+ ack:
13
+ uses: ansible/team-devtools/.github/workflows/push.yml@main
@@ -1,3 +1,4 @@
1
+ ---
1
2
  name: release
2
3
 
3
4
  on:
@@ -18,10 +19,10 @@ jobs:
18
19
  TOX_PARALLEL_NO_SPINNER: 1
19
20
 
20
21
  steps:
21
- - name: Switch to using Python 3.9 by default
22
+ - name: Switch to using Python 3.10 by default
22
23
  uses: actions/setup-python@v5
23
24
  with:
24
- python-version: 3.9
25
+ python-version: "3.10"
25
26
 
26
27
  - name: Install tox
27
28
  run: >-
@@ -1,3 +1,4 @@
1
+ ---
1
2
  name: tox
2
3
 
3
4
  # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
@@ -22,9 +23,9 @@ jobs:
22
23
  id: generate_matrix
23
24
  uses: coactions/dynamic-matrix@v1
24
25
  with:
25
- min_python: "3.9"
26
+ min_python: "3.10"
26
27
  max_python: "3.12"
27
- default_python: "3.9" # used by jobs in other_names
28
+ default_python: "3.10" # used by jobs in other_names
28
29
  other_names: |
29
30
  lint
30
31
  pkg
@@ -40,7 +41,8 @@ jobs:
40
41
  matrix: ${{ fromJson(needs.pre.outputs.matrix) }}
41
42
 
42
43
  steps:
43
- - uses: actions/checkout@v4
44
+ - name: Checkout repository
45
+ uses: actions/checkout@v4
44
46
  with:
45
47
  fetch-depth: 0 # needed by setuptools-scm
46
48
 
@@ -131,3 +131,10 @@ src/molecule_plugins/_version.py
131
131
 
132
132
  # Ignore generated files
133
133
  test/roles
134
+
135
+ # Quilt/Patch generated files
136
+ .pc
137
+ patches
138
+ *.patch
139
+ *.orig
140
+ *.rej
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: molecule-plugins
3
- Version: 23.5.3
3
+ Version: 23.7.0
4
4
  Summary: Molecule Plugins
5
5
  Author-email: Sorin Sbarnea <sorin.sbarnea@gmail.com>
6
6
  Maintainer-email: Sorin Sbarnea <sorin.sbarnea@gmail.com>
@@ -19,7 +19,6 @@ Classifier: License :: OSI Approved :: MIT License
19
19
  Classifier: Operating System :: MacOS
20
20
  Classifier: Operating System :: POSIX
21
21
  Classifier: Programming Language :: Python :: 3
22
- Classifier: Programming Language :: Python :: 3.9
23
22
  Classifier: Programming Language :: Python :: 3.10
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
@@ -29,13 +28,13 @@ Classifier: Topic :: System :: Systems Administration
29
28
  Classifier: Topic :: Software Development :: Quality Assurance
30
29
  Classifier: Topic :: Software Development :: Testing
31
30
  Classifier: Topic :: Utilities
32
- Requires-Python: >=3.9
31
+ Requires-Python: >=3.10
33
32
  Description-Content-Type: text/markdown
34
33
  License-File: LICENSE
35
- Requires-Dist: molecule>=6.0.0a1
34
+ Requires-Dist: molecule>=25.1.0
36
35
  Provides-Extra: test
37
36
  Requires-Dist: pytest-helpers-namespace>=2019.1.8; extra == "test"
38
- Requires-Dist: molecule[test]>=6.0.0a1; extra == "test"
37
+ Requires-Dist: molecule[test]>=25.1.0; extra == "test"
39
38
  Provides-Extra: azure
40
39
  Provides-Extra: docker
41
40
  Requires-Dist: selinux; sys_platform == "linux2" and extra == "docker"
@@ -44,6 +43,8 @@ Requires-Dist: docker>=4.3.1; extra == "docker"
44
43
  Requires-Dist: requests; extra == "docker"
45
44
  Provides-Extra: ec2
46
45
  Provides-Extra: gce
46
+ Requires-Dist: requests>=2.31.0; extra == "gce"
47
+ Requires-Dist: google-auth>=2.28.2; extra == "gce"
47
48
  Provides-Extra: podman
48
49
  Provides-Extra: selinux
49
50
  Requires-Dist: selinux; sys_platform == "linux2" and extra == "selinux"
@@ -66,7 +67,6 @@ This repository contains the following molecule plugins:
66
67
  - podman
67
68
  - vagrant
68
69
 
69
-
70
70
  Installing `molecule-plugins` does not install dependencies specific to each,
71
71
  plugin. To install these you need to install the extras for each plugin, like
72
72
  `pip3 install 'molecule-plugins[azure]'`.
@@ -75,3 +75,27 @@ Before installing these plugins be sure that you uninstall their old standalone
75
75
  packages, like `pip3 uninstall molecule-azure`. If you fail to do so, you will
76
76
  end-up with a broken setup, as multiple plugins will have the same entry points,
77
77
  registered.
78
+
79
+ ## Creating new releases
80
+
81
+ The `release.yml` workflow generates the wheel and uploads the release to PyPI.
82
+ Here are the steps you need to kick that process off:
83
+
84
+ 1. Review the commit logs and decide on the next version.
85
+ - Breaking changes should increment to a new major version.
86
+ - New features should increment to a new minor version.
87
+ - Bug fixes and small changes should increment to a new patch version.
88
+
89
+ 2. Create a new tag and push it to the repo.
90
+
91
+ ```bash
92
+ git tag -s <NEW_VERSION> -m "Tag message"
93
+ git push --tags upstream
94
+ ```
95
+
96
+ > It is possible to create lightweight tags using `git tag <NEW_VERSION>` but signed tags are preferred.
97
+
98
+ 3. Publish the release with either the GitHub CLI or in a browser.
99
+ See the [GitHub documentation about managing releases](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository).
100
+ 4. Check the [release workflow](https://github.com/ansible-community/molecule-plugins/actions/workflows/release.yml) runs successfully.
101
+ 5. Verify the new version is available from the [molecule-plugins](https://pypi.org/project/molecule-plugins/) page on PyPI.
@@ -0,0 +1,45 @@
1
+ # molecule-plugins
2
+
3
+ This repository contains the following molecule plugins:
4
+
5
+ - azure
6
+ - containers
7
+ - docker
8
+ - ec2
9
+ - gce
10
+ - openstack
11
+ - podman
12
+ - vagrant
13
+
14
+ Installing `molecule-plugins` does not install dependencies specific to each,
15
+ plugin. To install these you need to install the extras for each plugin, like
16
+ `pip3 install 'molecule-plugins[azure]'`.
17
+
18
+ Before installing these plugins be sure that you uninstall their old standalone
19
+ packages, like `pip3 uninstall molecule-azure`. If you fail to do so, you will
20
+ end-up with a broken setup, as multiple plugins will have the same entry points,
21
+ registered.
22
+
23
+ ## Creating new releases
24
+
25
+ The `release.yml` workflow generates the wheel and uploads the release to PyPI.
26
+ Here are the steps you need to kick that process off:
27
+
28
+ 1. Review the commit logs and decide on the next version.
29
+ - Breaking changes should increment to a new major version.
30
+ - New features should increment to a new minor version.
31
+ - Bug fixes and small changes should increment to a new patch version.
32
+
33
+ 2. Create a new tag and push it to the repo.
34
+
35
+ ```bash
36
+ git tag -s <NEW_VERSION> -m "Tag message"
37
+ git push --tags upstream
38
+ ```
39
+
40
+ > It is possible to create lightweight tags using `git tag <NEW_VERSION>` but signed tags are preferred.
41
+
42
+ 3. Publish the release with either the GitHub CLI or in a browser.
43
+ See the [GitHub documentation about managing releases](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository).
44
+ 4. Check the [release workflow](https://github.com/ansible-community/molecule-plugins/actions/workflows/release.yml) runs successfully.
45
+ 5. Verify the new version is available from the [molecule-plugins](https://pypi.org/project/molecule-plugins/) page on PyPI.
@@ -3,10 +3,12 @@ import os
3
3
  import random
4
4
  import shutil
5
5
  import string
6
+ from pathlib import Path
6
7
 
7
8
  import pytest
8
9
 
9
- from molecule import config, logger, util
10
+ from molecule import config, logger
11
+ from molecule.app import get_app
10
12
  from molecule.scenario import ephemeral_directory
11
13
 
12
14
  LOG = logger.get_logger(__name__)
@@ -18,7 +20,7 @@ def run_command(cmd, env=os.environ, log=True):
18
20
  if log:
19
21
  cmd = _rebake_command(cmd, env)
20
22
  cmd = cmd.bake(_truncate_exc=False)
21
- return util.run_command(cmd, env=env)
23
+ return get_app(Path()).run_command(cmd, env=env)
22
24
 
23
25
 
24
26
  def _rebake_command(cmd, env, out=LOG.info, err=LOG.error):
@@ -43,6 +43,12 @@ security_group.rules[].port_min Starting port (can't be used with port)
43
43
  security_group.rules[].port_max Ending port (can't be used with port)
44
44
  security_group.rules[].type IPv4 or IPv6, default 'IPv4'
45
45
  user Default user of image
46
+ auto_ip Ensure instance has public IP, mutually \
47
+ exclusive with floating_ip_pools, \
48
+ default = true
49
+ floating_ip_pools List of floating pool IP names to choose a \
50
+ floating IP from, mutually exclusive with \
51
+ auto_ip, (optional)
46
52
  volume Mapping of volume settings (optional if \
47
53
  flavor provides volume)
48
54
  volume.size Size of volume (GB)
@@ -96,6 +102,8 @@ Examples
96
102
  flavor: m1.small
97
103
  image: Debian_10
98
104
  user: debian
105
+ floating_ip_pools: # mutually exclusive with auto_ip
106
+ - 1.2.3.4
99
107
  network:
100
108
  name: molecule
101
109
  router:
@@ -139,9 +147,10 @@ Examples
139
147
  network:
140
148
  name: molecule # use network from debian10 instance
141
149
  - name: ubuntu2004
142
- falvor: m1.tiny
150
+ flavor: m1.tiny
143
151
  image: Ubuntu_2004
144
152
  user: ubuntu
153
+ auto_ip: false # do not assign a public IP
145
154
  security_group:
146
155
  name: molecule # use security group from debian10 instance
147
156
  network:
@@ -5,7 +5,7 @@ driver:
5
5
  name: podman
6
6
  platforms:
7
7
  - name: instance
8
- image: docker.io/pycontribs/centos:8
8
+ image: quay.io/centos/centos:stream9
9
9
  pre_build_image: true
10
10
  published_ports:
11
11
  - 127.0.0.1:2080:80
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
8
8
 
9
9
  [project]
10
10
  # https://peps.python.org/pep-0621/#readme
11
- requires-python = ">=3.9"
11
+ requires-python = ">=3.10"
12
12
  dynamic = ["version"]
13
13
  name = "molecule-plugins"
14
14
  description = "Molecule Plugins"
@@ -26,7 +26,6 @@ classifiers = [
26
26
  "Operating System :: MacOS",
27
27
  "Operating System :: POSIX",
28
28
  "Programming Language :: Python :: 3",
29
- "Programming Language :: Python :: 3.9",
30
29
  "Programming Language :: Python :: 3.10",
31
30
  "Programming Language :: Python :: 3.11",
32
31
  "Programming Language :: Python :: 3.12",
@@ -40,7 +39,7 @@ classifiers = [
40
39
  keywords = ["ansible", "testing", "molecule", "plugin"]
41
40
  dependencies = [
42
41
  # molecule plugins are not allowed to mention Ansible as a direct dependency
43
- "molecule >= 6.0.0a1",
42
+ "molecule >= 25.1.0",
44
43
  ]
45
44
 
46
45
  [project.urls]
@@ -52,7 +51,7 @@ changelog = "https://github.com/ansible-community/molecule-plugins/releases"
52
51
  [project.optional-dependencies]
53
52
  test = [
54
53
  "pytest-helpers-namespace >= 2019.1.8",
55
- "molecule[test] >= 6.0.0a1"
54
+ "molecule[test] >= 25.1.0"
56
55
  ]
57
56
  azure = []
58
57
  docker = [
@@ -66,7 +65,10 @@ docker = [
66
65
  "requests" # also required by docker
67
66
  ]
68
67
  ec2 = []
69
- gce = []
68
+ gce = [
69
+ "requests >= 2.31.0",
70
+ "google-auth >= 2.28.2",
71
+ ]
70
72
  podman = [
71
73
  ]
72
74
  selinux = [
@@ -86,7 +88,7 @@ openstack = [
86
88
  ]
87
89
 
88
90
  [tool.ruff]
89
- ignore = [
91
+ lint.ignore = [
90
92
  "E501", # we use black
91
93
  # we deliberately ignore these:
92
94
  "EM102",
@@ -98,6 +100,7 @@ ignore = [
98
100
  "B028",
99
101
  "BLE",
100
102
  "C901",
103
+ "COM812",
101
104
  "D",
102
105
  "DTZ",
103
106
  "FBT",
@@ -116,15 +119,15 @@ ignore = [
116
119
  "FIX002",
117
120
  "TRY",
118
121
  ]
119
- select = ["ALL"]
122
+ lint.select = ["ALL"]
120
123
  target-version = "py39"
121
124
  # Same as Black.
122
125
  line-length = 88
123
126
 
124
- [tool.ruff.flake8-pytest-style]
127
+ [tool.ruff.lint.flake8-pytest-style]
125
128
  parametrize-values-type = "tuple"
126
129
 
127
- [tool.ruff.isort]
130
+ [tool.ruff.lint.isort]
128
131
  known-first-party = ["molecule_plugins"]
129
132
 
130
133
  [project.entry-points."molecule.driver"]
@@ -4,7 +4,7 @@ collections:
4
4
  - name: google.cloud
5
5
  - name: amazon.aws
6
6
  - name: community.docker
7
- version: ">=3.4.11"
7
+ version: ">=3.10.2"
8
8
  - name: containers.podman
9
9
  - name: azure.azcollection
10
10
  version: ">=1,<2"
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '23.5.3'
16
- __version_tuple__ = version_tuple = (23, 5, 3)
15
+ __version__ = version = '23.7.0'
16
+ __version_tuple__ = version_tuple = (23, 7, 0)
@@ -90,10 +90,10 @@ class Azure(Driver):
90
90
  connection_options = " ".join(self.ssh_connection_options)
91
91
 
92
92
  return (
93
- "ssh {{address}} "
94
- "-l {{user}} "
95
- "-p {{port}} "
96
- "-i {{identity_file}} "
93
+ "ssh {address} "
94
+ "-l {user} "
95
+ "-p {port} "
96
+ "-i {identity_file} "
97
97
  f"{connection_options}"
98
98
  )
99
99
 
@@ -19,7 +19,6 @@
19
19
  # DEALINGS IN THE SOFTWARE.
20
20
  """Docker Driver Module."""
21
21
 
22
-
23
22
  import os
24
23
 
25
24
  from molecule import logger
@@ -119,6 +118,8 @@ class Docker(Driver):
119
118
  restart_retries: 1
120
119
  buildargs:
121
120
  http_proxy: http://proxy.example.com:8080/
121
+ cache_from:
122
+ - registry.example.com/example/example:main
122
123
 
123
124
  If specifying the `CMD`_ directive in your ``Dockerfile.j2`` or consuming a
124
125
  built image which declares a ``CMD`` directive, then you must set
@@ -253,7 +254,11 @@ class Docker(Driver):
253
254
  self._passed_sanity = True
254
255
 
255
256
  def reset(self):
256
- import docker
257
+ # maybe use self.sanity_check instead?
258
+ try:
259
+ import docker
260
+ except ImportError:
261
+ return
257
262
 
258
263
  client = docker.from_env()
259
264
  for c in client.containers.list(filters={"label": "owner=molecule"}):
@@ -270,4 +275,4 @@ class Docker(Driver):
270
275
  def required_collections(self) -> dict[str, str]:
271
276
  """Return collections dict containing names and versions required."""
272
277
  # https://galaxy.ansible.com/community/docker
273
- return {"community.docker": "3.4.11", "ansible.posix": "1.4.0"}
278
+ return {"community.docker": "3.10.2", "ansible.posix": "1.4.0"}
@@ -27,6 +27,8 @@
27
27
  key_path: "{{ item.key_path | default((lookup('env', 'DOCKER_CERT_PATH') + '/key.pem') if lookup('env', 'DOCKER_CERT_PATH') else omit) }}"
28
28
  tls_verify: "{{ item.tls_verify | default(lookup('env', 'DOCKER_TLS_VERIFY')) or false }}"
29
29
  with_items: "{{ molecule_yml.platforms }}"
30
+ loop_control:
31
+ label: "{{ item.registry.url | default(item.name) }}"
30
32
  when:
31
33
  - item.registry is defined
32
34
  - item.registry.url is defined and item.registry.url
@@ -38,6 +40,8 @@
38
40
  ansible.builtin.stat:
39
41
  path: "{{ molecule_scenario_directory + '/' + (item.dockerfile | default('Dockerfile.j2')) }}"
40
42
  loop: "{{ molecule_yml.platforms }}"
43
+ loop_control:
44
+ label: "{{ item.name }}"
41
45
  register: dockerfile_stats
42
46
 
43
47
  - name: Create Dockerfiles from image names
@@ -52,6 +56,7 @@
52
56
  mode: "0600"
53
57
  loop: "{{ molecule_yml.platforms }}"
54
58
  loop_control:
59
+ label: "{{ item.name }}"
55
60
  index_var: i
56
61
  when: not item.pre_build_image | default(false)
57
62
  register: platforms
@@ -68,6 +73,7 @@
68
73
  - "--exclude=molecule.yml"
69
74
  loop: "{{ molecule_yml.platforms }}"
70
75
  loop_control:
76
+ label: "{{ item.name }}"
71
77
  index_var: i
72
78
  when: not item.pre_build_image | default(false)
73
79
  delegate_to: localhost
@@ -81,6 +87,8 @@
81
87
  key_path: "{{ item.key_path | default((lookup('env', 'DOCKER_CERT_PATH') + '/key.pem') if lookup('env', 'DOCKER_CERT_PATH') else omit) }}"
82
88
  tls_verify: "{{ item.tls_verify | default(lookup('env', 'DOCKER_TLS_VERIFY')) or false }}"
83
89
  with_items: "{{ platforms.results }}"
90
+ loop_control:
91
+ label: "{{ item.item.docker_host | default(lookup('env', 'DOCKER_HOST') or 'unix://var/run/docker.sock') }}"
84
92
  when:
85
93
  - not item.pre_build_image | default(false)
86
94
  register: docker_images
@@ -104,6 +112,7 @@
104
112
  network: "{{ item.item.network_mode | default(omit) }}"
105
113
  args: "{{ item.item.buildargs | default(omit) }}"
106
114
  platform: "{{ item.item.platform | default(omit) }}"
115
+ cache_from: "{{ item.item.cache_from | default(omit) }}"
107
116
  name: "molecule_local/{{ item.item.image }}"
108
117
  docker_host: "{{ item.item.docker_host | default(lookup('env', 'DOCKER_HOST') or 'unix://var/run/docker.sock') }}"
109
118
  cacert_path: "{{ item.cacert_path | default((lookup('env', 'DOCKER_CERT_PATH') + '/ca.pem') if lookup('env', 'DOCKER_CERT_PATH') else omit) }}"
@@ -128,6 +137,8 @@
128
137
  combine({item.name: item.command | default('bash -c "while true; do sleep 10000; done"')})
129
138
  }}
130
139
  with_items: "{{ molecule_yml.platforms }}"
140
+ loop_control:
141
+ label: "{{ item.name }}"
131
142
  when: item.override_command | default(true)
132
143
 
133
144
  - name: Create molecule instance(s)
@@ -199,3 +210,5 @@
199
210
  until: docker_jobs.finished
200
211
  retries: 300
201
212
  with_items: "{{ server.results }}"
213
+ loop_control:
214
+ label: "{{ item.item.name }}"
@@ -9,7 +9,7 @@
9
9
  # platforms supported as being managed by molecule/ansible, this does
10
10
  # not mean molecule itself can run on them.
11
11
  - image: alpine:edge
12
- - image: quay.io/centos/centos:stream8
12
+ - image: quay.io/centos/centos:stream9
13
13
  - image: ubuntu:latest
14
14
  - image: debian:latest
15
15
  tags:
@@ -128,6 +128,8 @@
128
128
  type: rsa
129
129
  size: 2048
130
130
  regenerate: never
131
+ backend: cryptography
132
+ private_key_format: pkcs1
131
133
  loop: "{{ platforms }}"
132
134
  loop_control:
133
135
  label: "{{ item.name }}"
@@ -182,7 +182,7 @@ class EC2(Driver):
182
182
  '"/u:{}" '
183
183
  '"/p:{}" '
184
184
  "/v:{} "
185
- "/cert-tofu "
185
+ "/cert:tofu "
186
186
  "+clipboard "
187
187
  "/grab-keyboard".format(
188
188
  ansible_connection_options["ansible_user"],
@@ -195,10 +195,10 @@ class EC2(Driver):
195
195
  connection_options = " ".join(self.ssh_connection_options)
196
196
 
197
197
  return (
198
- "ssh {{address}} "
199
- "-l {{user}} "
200
- "-p {{port}} "
201
- "-i {{identity_file}} "
198
+ "ssh {address} "
199
+ "-l {user} "
200
+ "-p {port} "
201
+ "-i {identity_file} "
202
202
  f"{connection_options}"
203
203
  )
204
204
 
@@ -94,10 +94,10 @@ class GCE(Driver):
94
94
  connection_options = " ".join(self.ssh_connection_options)
95
95
 
96
96
  return (
97
- "ssh {{address}} "
98
- "-l {{user}} "
99
- "-p {{port}} "
100
- "-i {{identity_file}} "
97
+ "ssh {address} "
98
+ "-l {user} "
99
+ "-p {port} "
100
+ "-i {identity_file} "
101
101
  f"{connection_options}"
102
102
  )
103
103
 
@@ -28,6 +28,7 @@
28
28
  subnetwork:
29
29
  selfLink: "{{ gcp_snet }}"
30
30
  access_configs: "{{ [{'name': 'instance_ip', 'type': 'ONE_TO_ONE_NAT'}] if molecule_yml.driver.external_access else [] }}"
31
+ tags: "{{ item.tags | default(omit) }}"
31
32
  zone: "{{ item.zone | default(molecule_yml.driver.region + '-b') }}"
32
33
  project: "{{ gcp_project_id }}"
33
34
  scopes: "{{ molecule_yml.driver.scopes | default(['https://www.googleapis.com/auth/compute'], True) }}"
@@ -61,3 +62,7 @@
61
62
  search_regex: SSH
62
63
  delay: 10
63
64
  loop: "{{ server.results }}"
65
+ register: waitfor
66
+ until: waitfor.failed == false
67
+ retries: 6
68
+ delay: 10
@@ -20,6 +20,7 @@
20
20
  subnetwork:
21
21
  selfLink: "{{ gcp_snet }}"
22
22
  access_configs: "{{ [{'name': 'instance_ip', 'type': 'ONE_TO_ONE_NAT'}] if molecule_yml.driver.external_access else [] }}"
23
+ tags: "{{ item.tags | default(omit) }}"
23
24
  zone: "{{ item.zone | default(molecule_yml.driver.region + '-b') }}"
24
25
  project: "{{ gcp_project_id }}"
25
26
  scopes: "{{ molecule_yml.driver.scopes | default(['https://www.googleapis.com/auth/compute'], True) }}"
@@ -50,6 +51,10 @@
50
51
  host: "{{ item.networkInterfaces.0.accessConfigs.0.natIP if molecule_yml.driver.external_access else item.networkInterfaces.0.networkIP }}"
51
52
  delay: 10
52
53
  loop: "{{ server.results }}"
54
+ register: waitfor
55
+ until: waitfor.failed == false
56
+ retries: 6
57
+ delay: 10
53
58
 
54
59
  - name: Prepare Windows User
55
60
  ansible.builtin.script: >
@@ -27,6 +27,8 @@ class Openstack(Driver):
27
27
  flavor: m1.small
28
28
  image: Ubuntu_20.04
29
29
  user: ubuntu
30
+ floating_ip_pools: # mutually exclusive with auto_ip
31
+ - 1.2.3.4
30
32
  security_group:
31
33
  name: molecule-sec
32
34
  description: Molecule test
@@ -102,6 +102,8 @@
102
102
  image: "{{ item.image }}"
103
103
  key_name: "{{ key_name }}"
104
104
  flavor: "{{ item.flavor }}"
105
+ floating_ip_pools: "{{ item.floating_ip_pools if item.floating_ip_pools is defined and item.floating_ip_pools | length > 0 else omit }}"
106
+ auto_ip: "{{ item.auto_ip if item.auto_ip is defined else omit }}"
105
107
  boot_from_volume: "{{ true if item.volume is defined and item.volume.size else false }}"
106
108
  terminate_volume: "{{ true if item.volume is defined and item.volume.size else false }}"
107
109
  volume_size: "{{ item.volume.size if item.volume is defined and item.volume.size else omit }}"
@@ -19,9 +19,9 @@
19
19
  # DEALINGS IN THE SOFTWARE.
20
20
  """Podman Driver Module."""
21
21
 
22
-
23
22
  import os
24
23
  import warnings
24
+ from pathlib import Path
25
25
  from shutil import which
26
26
 
27
27
  from ansible_compat.runtime import Runtime
@@ -29,6 +29,7 @@ from packaging.version import Version
29
29
 
30
30
  from molecule import logger, util
31
31
  from molecule.api import Driver, MoleculeRuntimeWarning
32
+ from molecule.app import get_app
32
33
  from molecule.constants import RC_SETUP_ERROR
33
34
  from molecule.util import sysexit_with_message
34
35
 
@@ -243,3 +244,9 @@ class Podman(Driver):
243
244
  def required_collections(self) -> dict[str, str]:
244
245
  """Return collections dict containing names and versions required."""
245
246
  return {"containers.podman": "1.7.0", "ansible.posix": "1.3.0"}
247
+
248
+ def reset(self):
249
+ # keep `--filter` in sync with playbooks/create.yml
250
+ get_app(Path()).run_command(
251
+ ["podman", "rm", "--force", "--filter=label=owner=molecule"]
252
+ )
@@ -77,6 +77,7 @@
77
77
  {% if item.item.pull is defined %}--pull={{ item.item.pull }}{% endif %}
78
78
  file: "{{ item.dest }}"
79
79
  name: "molecule_local/{{ item.item.image }}"
80
+ executable: "{{ podman_exec }}"
80
81
  path: "{{ molecule_scenario_directory }}"
81
82
  pull: "{{ item.item.pull | default(omit) }}"
82
83
  loop: "{{ platforms.results }}"
@@ -145,9 +146,11 @@
145
146
  etc_hosts: "{{ item.etc_hosts | default(omit) }}"
146
147
  executable: "{{ podman_exec }}"
147
148
  expose: "{{ item.exposed_ports | default(omit) }}"
148
- hostname: "{{ item.hostname | default(omit) }}"
149
+ hostname: "{{ item.hostname | default(item.name) }}"
149
150
  image: "{{ item.pre_build_image | default(false) | ternary('', 'molecule_local/') }}{{ item.image }}"
150
151
  ip: "{{ item.ip | default(omit) }}"
152
+ label:
153
+ owner: "molecule" # keep in sync with ../driver.py:Podman.reset()
151
154
  network: "{{ item.network | default(omit) }}"
152
155
  pid: "{{ item.pid_mode | default(omit) }}"
153
156
  privileged: "{{ item.privileged | default(omit) }}"