molecule-plugins 23.6.0__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 (241) hide show
  1. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.github/workflows/release.yml +2 -2
  2. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.github/workflows/tox.yml +2 -2
  3. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/PKG-INFO +29 -6
  4. molecule_plugins-23.7.0/README.md +45 -0
  5. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/conftest.py +4 -2
  6. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/doc/openstack/platforms.rst +10 -1
  7. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/pyproject.toml +8 -8
  8. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/requirements.yml +1 -1
  9. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/_version.py +2 -2
  10. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/driver.py +1 -2
  11. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/driver.py +1 -1
  12. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/tasks/create_linux_instance.yml +3 -1
  13. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/tasks/create_windows_instance.yml +4 -0
  14. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/driver.py +2 -0
  15. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/create.yml +2 -0
  16. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/driver.py +6 -3
  17. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/playbooks/create.yml +1 -1
  18. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/modules/vagrant.py +72 -67
  19. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/PKG-INFO +29 -6
  20. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/requires.txt +2 -2
  21. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/functional/test_azure.py +7 -6
  22. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/containers/functional/test_containers.py +5 -3
  23. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/test_func.py +13 -8
  24. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/functional/test_ec2.py +5 -4
  25. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/functional/test_func.py +5 -4
  26. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/test_func.py +5 -4
  27. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/podman/test_func.py +13 -6
  28. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/functional/test_func.py +9 -9
  29. molecule_plugins-23.6.0/README.md +0 -21
  30. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.ansible-lint +0 -0
  31. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.ansible-lint-ignore +0 -0
  32. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.flake8 +0 -0
  33. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.github/dependabot.yml +0 -0
  34. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.github/release-drafter.yml +0 -0
  35. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.github/workflows/ack.yml +0 -0
  36. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.github/workflows/push.yml +0 -0
  37. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.gitignore +0 -0
  38. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/.pre-commit-config.yaml +0 -0
  39. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/LICENSE +0 -0
  40. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/MANIFEST.in +0 -0
  41. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/bindep.txt +0 -0
  42. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/doc/ec2/README.rst +0 -0
  43. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/doc/ec2/platforms.rst +0 -0
  44. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/doc/openstack/README.rst +0 -0
  45. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/doc/vagrant/README.rst +0 -0
  46. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/molecule/test-podman/converge.yml +0 -0
  47. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/molecule/test-podman/molecule.yml +0 -0
  48. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/molecule/test-podman/verify.yml +0 -0
  49. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/mypy.ini +0 -0
  50. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/pytest.ini +0 -0
  51. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/setup.cfg +0 -0
  52. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/__init__.py +0 -0
  53. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/__init__.py +0 -0
  54. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/cookiecutter.json +0 -0
  55. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/INSTALL.rst +0 -0
  56. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  57. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/create.yml +0 -0
  58. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/destroy.yml +0 -0
  59. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/azure/driver.py +0 -0
  60. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/containers/__init__.py +0 -0
  61. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/containers/cookiecutter/cookiecutter.json +0 -0
  62. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/containers/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  63. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/containers/driver.py +0 -0
  64. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/__init__.py +0 -0
  65. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/cookiecutter/cookiecutter.json +0 -0
  66. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  67. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/Dockerfile.j2 +0 -0
  68. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/create.yml +0 -0
  69. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/destroy.yml +0 -0
  70. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/filter_plugins/get_docker_networks.py +0 -0
  71. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/tasks/create_network.yml +0 -0
  72. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/tasks/delete_network.yml +0 -0
  73. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/docker/playbooks/validate-dockerfile.yml +0 -0
  74. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/__init__.py +0 -0
  75. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/cookiecutter.json +0 -0
  76. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/INSTALL.rst +0 -0
  77. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  78. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/create.yml +0 -0
  79. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/destroy.yml +5 -5
  80. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/ec2/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/prepare.yml +0 -0
  81. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/__init__.py +0 -0
  82. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/cookiecutter/cookiecutter.json +0 -0
  83. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  84. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/driver.py +0 -0
  85. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/create.yml +0 -0
  86. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/destroy.yml +0 -0
  87. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/files/windows_auth.py +0 -0
  88. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/gce/playbooks/handlers/main.yml +0 -0
  89. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/__init__.py +0 -0
  90. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/cookiecutter/cookiecutter.json +0 -0
  91. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  92. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/destroy.yml +0 -0
  93. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/prepare.yml +0 -0
  94. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/tasks/server_addr.yml +0 -0
  95. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/openstack/playbooks/tasks/vars.yml +0 -0
  96. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/__init__.py +0 -0
  97. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/cookiecutter/cookiecutter.json +0 -0
  98. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  99. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/playbooks/Dockerfile.j2 +0 -0
  100. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/playbooks/destroy.yml +0 -0
  101. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/podman/playbooks/validate-dockerfile.yml +0 -0
  102. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/py.typed +0 -0
  103. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/__init__.py +0 -0
  104. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/cookiecutter/cookiecutter.json +0 -0
  105. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/INSTALL.rst +0 -0
  106. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/cookiecutter/{{cookiecutter.molecule_directory}}/{{cookiecutter.scenario_name}}/converge.yml +0 -0
  107. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/driver.py +0 -0
  108. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/modules/__init__.py +0 -0
  109. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/playbooks/create.yml +0 -0
  110. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/playbooks/destroy.yml +0 -0
  111. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins/vagrant/playbooks/prepare.yml +0 -0
  112. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/SOURCES.txt +0 -0
  113. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/dependency_links.txt +0 -0
  114. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/entry_points.txt +0 -0
  115. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/src/molecule_plugins.egg-info/top_level.txt +0 -0
  116. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/__init__.py +0 -0
  117. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/functional/__init__.py +0 -0
  118. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/functional/conftest.py +0 -0
  119. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/default/converge.yml +0 -0
  120. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/default/molecule.yml +0 -0
  121. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/default/tests/test_default.py +0 -0
  122. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/converge.yml +0 -0
  123. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/molecule.yml +0 -0
  124. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/prepare.yml +0 -0
  125. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/tests/__init__.py +0 -0
  126. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/scenarios/driver/azure/molecule/multi-node/tests/test_default.py +0 -0
  127. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/azure/test_driver.py +0 -0
  128. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/containers/__init__.py +0 -0
  129. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/containers/functional/.ansible-lint +0 -0
  130. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/containers/functional/__init__.py +0 -0
  131. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/containers/functional/conftest.py +0 -0
  132. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/containers/scenarios/driver/containers/molecule/default/converge.yml +0 -0
  133. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/containers/scenarios/driver/containers/molecule/default/molecule.yml +0 -0
  134. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/containers/test_driver.py +0 -0
  135. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/__init__.py +0 -0
  136. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/conftest.py +0 -0
  137. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/scenarios/env-substitution/molecule/default/converge.yml +0 -0
  138. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/scenarios/env-substitution/molecule/default/molecule.yml +0 -0
  139. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/scenarios/with-context/molecule/default/Dockerfile.j2 +0 -0
  140. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/scenarios/with-context/molecule/default/FOO +0 -0
  141. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/scenarios/with-context/molecule/default/converge.yml +0 -0
  142. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/scenarios/with-context/molecule/default/molecule.yml +0 -0
  143. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/docker/test_driver.py +0 -0
  144. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/__init__.py +0 -0
  145. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/functional/.ansible-lint +0 -0
  146. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/functional/__init__.py +0 -0
  147. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/functional/conftest.py +0 -0
  148. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/default/converge.yml +0 -0
  149. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/default/molecule.yml +0 -0
  150. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/default/prepare.yml +0 -0
  151. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/default/tests/test_default.py +0 -0
  152. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/converge.yml +0 -0
  153. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/molecule.yml +0 -0
  154. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/prepare.yml +0 -0
  155. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/tests/__init__.py +0 -0
  156. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/scenarios/driver/ec2/molecule/multi-node/tests/test_default.py +0 -0
  157. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/ec2/test_driver.py +0 -0
  158. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/__init__.py +0 -0
  159. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/functional/.ansible-lint +0 -0
  160. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/functional/__init__.py +0 -0
  161. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/functional/conftest.py +0 -0
  162. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/INSTALL.md +0 -0
  163. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/converge.yml +0 -0
  164. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/create.yml +0 -0
  165. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/destroy.yml +0 -0
  166. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/files/windows_auth.py +0 -0
  167. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/handlers/main.yml +0 -0
  168. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/molecule.yml +0 -0
  169. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/prepare.yml +0 -0
  170. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/requirements.yml +0 -0
  171. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/tasks/create_linux_instance.yml +0 -0
  172. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/tasks/create_windows_instance.yml +0 -0
  173. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/linux/verify.yml +0 -0
  174. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/INSTALL.md +0 -0
  175. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/converge.yml +0 -0
  176. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/create.yml +0 -0
  177. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/destroy.yml +0 -0
  178. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/files/windows_auth.py +0 -0
  179. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/handlers/main.yml +0 -0
  180. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/molecule.yml +0 -0
  181. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/prepare.yml +0 -0
  182. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/requirements.yml +0 -0
  183. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/tasks/create_linux_instance.yml +0 -0
  184. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/tasks/create_windows_instance.yml +0 -0
  185. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/scenarios/windows/verify.yml +0 -0
  186. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/gce/test_driver.py +0 -0
  187. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/.ansible-lint +0 -0
  188. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/__init__.py +0 -0
  189. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/conftest.py +0 -0
  190. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/default/converge.yml +0 -0
  191. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/default/molecule.yml +0 -0
  192. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/multiple/converge.yml +0 -0
  193. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/multiple/molecule.yml +0 -0
  194. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/network/converge.yml +0 -0
  195. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/network/molecule.yml +0 -0
  196. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/security_group/converge.yml +0 -0
  197. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/security_group/molecule.yml +0 -0
  198. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/volume/converge.yml +0 -0
  199. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/scenarios/molecule/volume/molecule.yml +0 -0
  200. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/openstack/test_driver.py +0 -0
  201. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/podman/__init__.py +0 -0
  202. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/podman/conftest.py +0 -0
  203. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/podman/test_driver.py +0 -0
  204. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/__init__.py +0 -0
  205. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/functional/__init__.py +0 -0
  206. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/functional/conftest.py +0 -0
  207. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/box_url/converge.yml +0 -0
  208. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/box_url/molecule.yml +0 -0
  209. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/config_options/converge.yml +0 -0
  210. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/config_options/molecule.yml +0 -0
  211. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/config_options/verify.yml +0 -0
  212. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/default/converge.yml +0 -0
  213. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/default/molecule.yml +0 -0
  214. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/default-compat/converge.yml +0 -0
  215. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/default-compat/create.yml +0 -0
  216. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/default-compat/destroy.yml +0 -0
  217. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/default-compat/molecule.yml +0 -0
  218. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/hostname/converge.yml +0 -0
  219. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/hostname/molecule.yml +0 -0
  220. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/hostname/verify.yml +0 -0
  221. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/invalid/converge.yml +0 -0
  222. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/invalid/molecule.yml +0 -0
  223. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/multi-node/converge.yml +0 -0
  224. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/multi-node/molecule.yml +0 -0
  225. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/multi-node/verify.yml +0 -0
  226. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/network/converge.yml +0 -0
  227. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/network/molecule.yml +0 -0
  228. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/network/verify.yml +0 -0
  229. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/provider_config_options/converge.yml +0 -0
  230. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/provider_config_options/molecule.yml +0 -0
  231. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/provider_config_options/verify.yml +0 -0
  232. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/vagrant_root/converge.yml +0 -0
  233. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/vagrant_root/molecule.yml +0 -0
  234. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/scenarios/molecule/vagrant_root/verify.yml +0 -0
  235. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/test/vagrant-plugin/test_driver.py +0 -0
  236. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/tools/Vagrantfile +0 -0
  237. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/tools/create_testbox.sh +0 -0
  238. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/tools/extract_plugin_names.py +0 -0
  239. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/tools/generate-templates.sh +0 -0
  240. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/tools/test-setup.sh +0 -0
  241. {molecule_plugins-23.6.0 → molecule_plugins-23.7.0}/tox.ini +0 -0
@@ -19,10 +19,10 @@ jobs:
19
19
  TOX_PARALLEL_NO_SPINNER: 1
20
20
 
21
21
  steps:
22
- - name: Switch to using Python 3.9 by default
22
+ - name: Switch to using Python 3.10 by default
23
23
  uses: actions/setup-python@v5
24
24
  with:
25
- python-version: 3.9
25
+ python-version: "3.10"
26
26
 
27
27
  - name: Install tox
28
28
  run: >-
@@ -23,9 +23,9 @@ jobs:
23
23
  id: generate_matrix
24
24
  uses: coactions/dynamic-matrix@v1
25
25
  with:
26
- min_python: "3.9"
26
+ min_python: "3.10"
27
27
  max_python: "3.12"
28
- default_python: "3.9" # used by jobs in other_names
28
+ default_python: "3.10" # used by jobs in other_names
29
29
  other_names: |
30
30
  lint
31
31
  pkg
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: molecule-plugins
3
- Version: 23.6.0
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"
@@ -76,3 +75,27 @@ Before installing these plugins be sure that you uninstall their old standalone
76
75
  packages, like `pip3 uninstall molecule-azure`. If you fail to do so, you will
77
76
  end-up with a broken setup, as multiple plugins will have the same entry points,
78
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:
@@ -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 = [
@@ -89,7 +88,7 @@ openstack = [
89
88
  ]
90
89
 
91
90
  [tool.ruff]
92
- ignore = [
91
+ lint.ignore = [
93
92
  "E501", # we use black
94
93
  # we deliberately ignore these:
95
94
  "EM102",
@@ -101,6 +100,7 @@ ignore = [
101
100
  "B028",
102
101
  "BLE",
103
102
  "C901",
103
+ "COM812",
104
104
  "D",
105
105
  "DTZ",
106
106
  "FBT",
@@ -119,15 +119,15 @@ ignore = [
119
119
  "FIX002",
120
120
  "TRY",
121
121
  ]
122
- select = ["ALL"]
122
+ lint.select = ["ALL"]
123
123
  target-version = "py39"
124
124
  # Same as Black.
125
125
  line-length = 88
126
126
 
127
- [tool.ruff.flake8-pytest-style]
127
+ [tool.ruff.lint.flake8-pytest-style]
128
128
  parametrize-values-type = "tuple"
129
129
 
130
- [tool.ruff.isort]
130
+ [tool.ruff.lint.isort]
131
131
  known-first-party = ["molecule_plugins"]
132
132
 
133
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.6.0'
16
- __version_tuple__ = version_tuple = (23, 6, 0)
15
+ __version__ = version = '23.7.0'
16
+ __version_tuple__ = version_tuple = (23, 7, 0)
@@ -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
@@ -276,4 +275,4 @@ class Docker(Driver):
276
275
  def required_collections(self) -> dict[str, str]:
277
276
  """Return collections dict containing names and versions required."""
278
277
  # https://galaxy.ansible.com/community/docker
279
- return {"community.docker": "3.4.11", "ansible.posix": "1.4.0"}
278
+ return {"community.docker": "3.10.2", "ansible.posix": "1.4.0"}
@@ -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"],
@@ -61,6 +61,8 @@
61
61
  host: "{{ item.networkInterfaces.0.accessConfigs.0.natIP if molecule_yml.driver.external_access else item.networkInterfaces.0.networkIP }}"
62
62
  search_regex: SSH
63
63
  delay: 10
64
+ loop: "{{ server.results }}"
65
+ register: waitfor
66
+ until: waitfor.failed == false
64
67
  retries: 6
65
68
  delay: 10
66
- loop: "{{ server.results }}"
@@ -51,6 +51,10 @@
51
51
  host: "{{ item.networkInterfaces.0.accessConfigs.0.natIP if molecule_yml.driver.external_access else item.networkInterfaces.0.networkIP }}"
52
52
  delay: 10
53
53
  loop: "{{ server.results }}"
54
+ register: waitfor
55
+ until: waitfor.failed == false
56
+ retries: 6
57
+ delay: 10
54
58
 
55
59
  - name: Prepare Windows User
56
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,8 +29,9 @@ 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
- from molecule.util import run_command, sysexit_with_message
34
+ from molecule.util import sysexit_with_message
34
35
 
35
36
  log = logger.get_logger(__name__)
36
37
 
@@ -246,4 +247,6 @@ class Podman(Driver):
246
247
 
247
248
  def reset(self):
248
249
  # keep `--filter` in sync with playbooks/create.yml
249
- run_command(["podman", "rm", "--force", "--filter=label=owner=molecule"])
250
+ get_app(Path()).run_command(
251
+ ["podman", "rm", "--force", "--filter=label=owner=molecule"]
252
+ )
@@ -146,7 +146,7 @@
146
146
  etc_hosts: "{{ item.etc_hosts | default(omit) }}"
147
147
  executable: "{{ podman_exec }}"
148
148
  expose: "{{ item.exposed_ports | default(omit) }}"
149
- hostname: "{{ item.hostname | default(omit) }}"
149
+ hostname: "{{ item.hostname | default(item.name) }}"
150
150
  image: "{{ item.pre_build_image | default(false) | ternary('', 'molecule_local/') }}{{ item.image }}"
151
151
  ip: "{{ item.ip | default(omit) }}"
152
152
  label:
@@ -177,27 +177,27 @@ See doc/source/configuration.rst
177
177
  """
178
178
 
179
179
  VAGRANTFILE_TEMPLATE = """
180
- {%- macro ruby_format(value) -%}
181
- {%- if value is boolean -%}
182
- {{ value | string | lower }}
183
- {%- elif value is string -%}
180
+ {% macro ruby_format(value) %}
181
+ {% if value is boolean %}
182
+ {{- value | string | lower -}}
183
+ {% elif value is string %}
184
184
  {# "Bug" compat. To be removed later #}
185
- {%- if value[0] == value[-1] and value.startswith(("'", '"')) -%}
186
- {{ value }}
187
- {%- else -%}
188
- "{{ value }}"
189
- {%- endif -%}
190
- {%- else -%}
191
- {{ value }}
192
- {%- endif -%}
193
- {%- endmacro -%}
194
-
195
- {%- macro dict2args(dictionary) -%}
185
+ {% if value[0] == value[-1] and value.startswith(("'", '"')) %}
186
+ {{ value }}
187
+ {% else %}
188
+ "{{ value }}"
189
+ {% endif %}
190
+ {% else %}
191
+ {{ value }}
192
+ {% endif %}
193
+ {% endmacro %}
194
+
195
+ {% macro dict2args(dictionary) %}
196
196
  {% set sep = joiner(", ") %}
197
- {%- for key, value in dictionary.items() -%}
198
- {{ sep() }}{{ key }}: {{ ruby_format(value) }}
199
- {%- endfor -%}
200
- {%- endmacro -%}
197
+ {% for key, value in dictionary.items() -%}
198
+ {{ sep() }}{{ key }}: {{ ruby_format(value) | trim }}
199
+ {%- endfor %}
200
+ {% endmacro -%}
201
201
 
202
202
  # Ansible managed
203
203
 
@@ -212,26 +212,33 @@ Vagrant.configure('2') do |config|
212
212
 
213
213
  {% for instance in instances %}
214
214
  config.vm.define "{{ instance.name }}" do |c|
215
- ##
216
215
  # Box definition
217
- ##
218
216
  c.vm.box = "{{ instance.box }}"
219
- {{ 'c.vm.box_version = "{}"'.format(instance.box_version) | safe if instance.box_version }}
220
- {{ 'c.vm.box_url = "{}"'.format(instance.box_url) | safe if instance.box_url }}
221
- {{ 'c.vm.box_download_checksum = "{}"'.format(instance.box_download_checksum) | safe if instance.box_download_checksum }}
222
- {{ 'c.vm.box_download_checksum_type = "{}"'.format(instance.box_download_checksum_type) | safe if instance.box_download_checksum_type }}
217
+ {% if instance.box_version %}
218
+ {{ 'c.vm.box_version = "{}"'.format(instance.box_version) | safe }}
219
+ {% endif %}
220
+ {% if instance.box_url %}
221
+ {{ 'c.vm.box_url = "{}"'.format(instance.box_url) | safe }}
222
+ {% endif %}
223
+ {% if instance.box_architecture %}
224
+ {{ 'c.vm.box_architecture = "{}"'.format(instance.box_architecture) | safe }}
225
+ {% endif %}
226
+ {% if instance.box_download_checksum %}
227
+ {{ 'c.vm.box_download_checksum = "{}"'.format(instance.box_download_checksum) | safe }}
228
+ {% endif %}
229
+ {% if instance.box_download_checksum_type %}
230
+ {{ 'c.vm.box_download_checksum_type = "{}"'.format(instance.box_download_checksum_type) | safe }}
231
+ {% endif %}
223
232
 
224
- ##
225
233
  # Config options
226
- ##
227
234
  {% if instance.config_options['synced_folder'] is sameas false %}
228
235
  c.vm.synced_folder ".", "/vagrant", disabled: true
229
236
  {% endif %}
230
-
231
237
  {% for k,v in instance.config_options.items() %}
232
- {% if k not in ['synced_folder', 'cachier'] %}c.{{ k }} = {{ ruby_format(v) }}{% endif %}
238
+ {% if k not in ['synced_folder', 'cachier'] %}
239
+ c.{{ k }} = {{ ruby_format(v) }}
240
+ {% endif %}
233
241
  {% endfor %}
234
-
235
242
  {% if instance.hostname is boolean and instance.hostname is sameas false %}
236
243
  # c.vm.hostname not set
237
244
  {% elif instance.hostname is string %}
@@ -239,24 +246,22 @@ Vagrant.configure('2') do |config|
239
246
  {% else %}
240
247
  c.vm.hostname = "{{ instance.name }}"
241
248
  {% endif %}
249
+ {% if instance.networks | length > 0 %}
242
250
 
243
- ##
244
251
  # Network
245
- ##
246
252
  {% for n in instance.networks %}
247
- c.vm.network "{{ n.name }}", {{ dict2args(n.options) }}
253
+ c.vm.network "{{ n.name }}", {{ dict2args(n.options) | trim }}
248
254
  {% endfor %}
255
+ {% endif %}
256
+ {% if instance.instance_raw_config_args is not none %}
249
257
 
250
- ##
251
258
  # instance_raw_config_args
252
- ##
253
- {% if instance.instance_raw_config_args is not none %}{% for arg in instance.instance_raw_config_args -%}
259
+ {% for arg in instance.instance_raw_config_args %}
254
260
  c.{{ arg | safe }}
255
- {% endfor %}{% endif %}
261
+ {% endfor %}
262
+ {% endif %}
256
263
 
257
- ##
258
- # Provider
259
- ##
264
+ # Provider options
260
265
  c.vm.provider "{{ instance.provider }}" do |{{ instance.provider | lower }}, override|
261
266
  {% if instance.provider == "vsphere" %}
262
267
  {{ instance.provider | lower }}.memory_mb = {{ instance.memory }}
@@ -271,27 +276,13 @@ Vagrant.configure('2') do |config|
271
276
  {{ instance.provider | lower }}.memory = {{ instance.memory }}
272
277
  {{ instance.provider | lower }}.cpus = {{ instance.cpus }}
273
278
  {% endif %}
274
-
275
279
  {% for option, value in instance.provider_options.items() %}
276
- {{ instance.provider | lower }}.{{ option }} = {{ ruby_format(value) }}
280
+ {{ instance.provider | lower }}.{{ option }} = {{ ruby_format(value) | trim }}
277
281
  {% endfor %}
278
-
279
- {% if instance.provider_raw_config_args is not none %}
280
- {% for arg in instance.provider_raw_config_args %}
281
- {{ instance.provider | lower }}.{{ arg | safe }}
282
- {% endfor %}
283
- {% endif %}
284
-
285
- {% if instance.provider_override_args is not none %}
286
- {% for arg in instance.provider_override_args -%}
287
- override.{{ arg | safe }}
288
- {% endfor %}
289
- {% endif %}
290
-
291
282
  {% if instance.provider == 'virtualbox' %}
292
- {% if 'linked_clone' not in instance.provider_options %}
283
+ {% if 'linked_clone' not in instance.provider_options %}
293
284
  virtualbox.linked_clone = true
294
- {% endif %}
285
+ {% endif %}
295
286
  {% endif %}
296
287
  {% if instance.provider == 'libvirt' %}
297
288
  {% if no_kvm is sameas true and 'driver' not in instance.provider_options %}
@@ -314,6 +305,20 @@ Vagrant.configure('2') do |config|
314
305
  {% endif %}
315
306
  {% endif %}
316
307
  {% endif %}
308
+ {% if instance.provider_raw_config_args is not none %}
309
+
310
+ # provider_raw_config_args
311
+ {% for arg in instance.provider_raw_config_args %}
312
+ {{ instance.provider | lower }}.{{ arg | safe }}
313
+ {% endfor %}
314
+ {% endif %}
315
+ {% if instance.provider_override_args is not none %}
316
+
317
+ # provider_override_args
318
+ {% for arg in instance.provider_override_args %}
319
+ override.{{ arg | safe }}
320
+ {% endfor %}
321
+ {% endif %}
317
322
  end
318
323
  end
319
324
  {% endfor %}
@@ -498,10 +503,7 @@ class VagrantClient:
498
503
  try:
499
504
  return self._vagrant.conf(vm_name=instance_name)
500
505
  except Exception:
501
- msg = "Failed to get vagrant config for {}: See log file '{}'".format(
502
- instance_name,
503
- self._get_stderr_log(),
504
- )
506
+ msg = f"Failed to get vagrant config for {instance_name}: See log file '{self._get_stderr_log()}'"
505
507
  with open(self._get_stderr_log(), encoding="utf-8") as f:
506
508
  self.result["stderr"] = f.read()
507
509
  self._module.fail_json(msg=msg, **self.result)
@@ -512,10 +514,7 @@ class VagrantClient:
512
514
 
513
515
  return {"name": s.name, "state": s.state, "provider": s.provider}
514
516
  except Exception:
515
- msg = "Failed to get status for {}: See log file '{}'".format(
516
- instance_name,
517
- self._get_stderr_log(),
518
- )
517
+ msg = f"Failed to get status for {instance_name}: See log file '{self._get_stderr_log()}'"
519
518
  with open(self._get_stderr_log(), encoding="utf-8") as f:
520
519
  self.result["stderr"] = f.read()
521
520
  self._module.fail_json(msg=msg, **self.result)
@@ -572,7 +571,11 @@ class VagrantClient:
572
571
 
573
572
  def _write_vagrantfile(self):
574
573
  instances = self._get_vagrant_config_dict()
575
- j_env = jinja2.Environment(autoescape=True)
574
+ j_env = jinja2.Environment(
575
+ autoescape=True,
576
+ trim_blocks=True,
577
+ lstrip_blocks=True,
578
+ )
576
579
  t = j_env.from_string(VAGRANTFILE_TEMPLATE)
577
580
  template = t.render(
578
581
  instances=instances,
@@ -645,6 +648,7 @@ class VagrantClient:
645
648
  "box": instance.get("box", self._module.params["default_box"]),
646
649
  "box_version": instance.get("box_version"),
647
650
  "box_url": instance.get("box_url"),
651
+ "box_architecture": instance.get("box_architecture"),
648
652
  "box_download_checksum": checksum,
649
653
  "box_download_checksum_type": checksum_type,
650
654
  "provider": self._module.params["provider_name"],
@@ -687,7 +691,7 @@ class VagrantClient:
687
691
  def _get_stderr_log(self):
688
692
  return self._get_vagrant_log("err")
689
693
 
690
- def _get_vagrant_log(self, __type):
694
+ def _get_vagrant_log(self, __type, /):
691
695
  return os.path.join(self._config["workdir"], f"vagrant.{__type}")
692
696
 
693
697
 
@@ -702,6 +706,7 @@ def main():
702
706
  "platform_box": {"type": "str", "required": False},
703
707
  "platform_box_version": {"type": "str"},
704
708
  "platform_box_url": {"type": "str"},
709
+ "platform_box_architecture": {"type": "str"},
705
710
  "platform_box_download_checksum": {"type": "str"},
706
711
  "platform_box_download_checksum_type": {"type": "str"},
707
712
  "provider_memory": {"type": "int", "default": 512},