ansible-core 2.15.4rc1__py3-none-any.whl → 2.16.0b2__py3-none-any.whl

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.

Potentially problematic release.


This version of ansible-core might be problematic. Click here for more details.

Files changed (427) hide show
  1. ansible/cli/__init__.py +3 -3
  2. ansible/cli/adhoc.py +1 -1
  3. ansible/cli/arguments/option_helpers.py +15 -5
  4. ansible/cli/config.py +2 -2
  5. ansible/cli/console.py +21 -17
  6. ansible/cli/doc.py +8 -9
  7. ansible/cli/galaxy.py +60 -27
  8. ansible/cli/inventory.py +1 -1
  9. ansible/cli/playbook.py +1 -1
  10. ansible/cli/pull.py +2 -2
  11. ansible/cli/scripts/ansible_connection_cli_stub.py +1 -1
  12. ansible/cli/vault.py +11 -6
  13. ansible/collections/__init__.py +0 -29
  14. ansible/collections/list.py +23 -44
  15. ansible/config/ansible_builtin_runtime.yml +8 -4
  16. ansible/config/base.yml +34 -22
  17. ansible/config/manager.py +1 -1
  18. ansible/constants.py +3 -5
  19. ansible/errors/__init__.py +1 -1
  20. ansible/executor/interpreter_discovery.py +1 -1
  21. ansible/executor/module_common.py +39 -32
  22. ansible/executor/play_iterator.py +0 -15
  23. ansible/executor/playbook_executor.py +3 -3
  24. ansible/executor/powershell/module_manifest.py +1 -1
  25. ansible/executor/powershell/module_wrapper.ps1 +4 -1
  26. ansible/executor/process/worker.py +22 -7
  27. ansible/executor/task_executor.py +39 -40
  28. ansible/executor/task_queue_manager.py +8 -11
  29. ansible/galaxy/__init__.py +1 -1
  30. ansible/galaxy/api.py +8 -11
  31. ansible/galaxy/collection/__init__.py +17 -4
  32. ansible/galaxy/collection/concrete_artifact_manager.py +7 -2
  33. ansible/galaxy/collection/galaxy_api_proxy.py +1 -1
  34. ansible/galaxy/data/container/README.md +3 -5
  35. ansible/galaxy/dependency_resolution/__init__.py +1 -6
  36. ansible/galaxy/dependency_resolution/dataclasses.py +22 -1
  37. ansible/galaxy/dependency_resolution/providers.py +61 -69
  38. ansible/galaxy/role.py +31 -13
  39. ansible/galaxy/token.py +2 -2
  40. ansible/inventory/group.py +1 -1
  41. ansible/inventory/manager.py +1 -1
  42. ansible/module_utils/ansible_release.py +2 -2
  43. ansible/module_utils/basic.py +11 -41
  44. ansible/module_utils/common/file.py +0 -100
  45. ansible/module_utils/common/json.py +1 -1
  46. ansible/module_utils/common/locale.py +1 -1
  47. ansible/module_utils/common/text/converters.py +2 -2
  48. ansible/module_utils/common/validation.py +1 -1
  49. ansible/module_utils/compat/_selectors2.py +4 -4
  50. ansible/module_utils/compat/datetime.py +40 -0
  51. ansible/module_utils/compat/selinux.py +1 -1
  52. ansible/module_utils/compat/typing.py +1 -1
  53. ansible/module_utils/connection.py +1 -1
  54. ansible/module_utils/facts/hardware/linux.py +2 -2
  55. ansible/module_utils/facts/hardware/openbsd.py +1 -1
  56. ansible/module_utils/facts/network/linux.py +3 -3
  57. ansible/module_utils/facts/other/facter.py +8 -15
  58. ansible/module_utils/facts/sysctl.py +1 -1
  59. ansible/module_utils/facts/system/date_time.py +2 -2
  60. ansible/module_utils/facts/system/distribution.py +1 -1
  61. ansible/module_utils/facts/system/local.py +6 -2
  62. ansible/module_utils/facts/system/pkg_mgr.py +6 -1
  63. ansible/module_utils/facts/system/service_mgr.py +4 -2
  64. ansible/module_utils/parsing/convert_bool.py +1 -1
  65. ansible/module_utils/service.py +9 -6
  66. ansible/module_utils/urls.py +40 -22
  67. ansible/modules/add_host.py +2 -2
  68. ansible/modules/apt.py +48 -31
  69. ansible/modules/apt_key.py +4 -4
  70. ansible/modules/apt_repository.py +5 -5
  71. ansible/modules/assemble.py +7 -7
  72. ansible/modules/assert.py +1 -1
  73. ansible/modules/async_status.py +11 -7
  74. ansible/modules/async_wrapper.py +1 -1
  75. ansible/modules/blockinfile.py +60 -17
  76. ansible/modules/command.py +37 -15
  77. ansible/modules/copy.py +35 -30
  78. ansible/modules/cron.py +14 -14
  79. ansible/modules/deb822_repository.py +4 -3
  80. ansible/modules/debconf.py +35 -14
  81. ansible/modules/debug.py +1 -1
  82. ansible/modules/dnf.py +29 -27
  83. ansible/modules/dnf5.py +22 -22
  84. ansible/modules/dpkg_selections.py +9 -2
  85. ansible/modules/expect.py +4 -4
  86. ansible/modules/fetch.py +7 -7
  87. ansible/modules/file.py +30 -30
  88. ansible/modules/find.py +82 -22
  89. ansible/modules/gather_facts.py +6 -2
  90. ansible/modules/get_url.py +29 -29
  91. ansible/modules/getent.py +4 -4
  92. ansible/modules/git.py +27 -27
  93. ansible/modules/group.py +5 -12
  94. ansible/modules/hostname.py +21 -2
  95. ansible/modules/include_role.py +5 -5
  96. ansible/modules/include_tasks.py +2 -2
  97. ansible/modules/include_vars.py +5 -5
  98. ansible/modules/iptables.py +70 -65
  99. ansible/modules/known_hosts.py +7 -7
  100. ansible/modules/lineinfile.py +33 -33
  101. ansible/modules/meta.py +13 -13
  102. ansible/modules/package.py +8 -8
  103. ansible/modules/package_facts.py +3 -3
  104. ansible/modules/pause.py +2 -2
  105. ansible/modules/ping.py +5 -5
  106. ansible/modules/pip.py +80 -46
  107. ansible/modules/reboot.py +8 -4
  108. ansible/modules/replace.py +20 -15
  109. ansible/modules/rpm_key.py +2 -2
  110. ansible/modules/script.py +16 -10
  111. ansible/modules/service.py +26 -98
  112. ansible/modules/service_facts.py +36 -12
  113. ansible/modules/set_fact.py +2 -2
  114. ansible/modules/set_stats.py +2 -2
  115. ansible/modules/setup.py +18 -18
  116. ansible/modules/shell.py +3 -3
  117. ansible/modules/stat.py +9 -30
  118. ansible/modules/subversion.py +9 -9
  119. ansible/modules/systemd.py +20 -19
  120. ansible/modules/systemd_service.py +20 -19
  121. ansible/modules/sysvinit.py +26 -21
  122. ansible/modules/tempfile.py +5 -4
  123. ansible/modules/template.py +60 -6
  124. ansible/modules/unarchive.py +21 -18
  125. ansible/modules/uri.py +39 -39
  126. ansible/modules/user.py +81 -53
  127. ansible/modules/wait_for.py +22 -21
  128. ansible/modules/wait_for_connection.py +4 -4
  129. ansible/modules/yum.py +38 -38
  130. ansible/modules/yum_repository.py +58 -80
  131. ansible/parsing/dataloader.py +27 -27
  132. ansible/parsing/mod_args.py +1 -1
  133. ansible/parsing/plugin_docs.py +3 -3
  134. ansible/parsing/splitter.py +14 -16
  135. ansible/parsing/utils/yaml.py +1 -1
  136. ansible/parsing/vault/__init__.py +8 -6
  137. ansible/parsing/yaml/constructor.py +1 -1
  138. ansible/parsing/yaml/objects.py +1 -1
  139. ansible/playbook/__init__.py +1 -1
  140. ansible/playbook/base.py +2 -2
  141. ansible/playbook/block.py +0 -1
  142. ansible/playbook/conditional.py +40 -114
  143. ansible/playbook/helpers.py +5 -28
  144. ansible/playbook/included_file.py +8 -7
  145. ansible/playbook/play.py +1 -1
  146. ansible/playbook/play_context.py +2 -2
  147. ansible/playbook/playbook_include.py +2 -2
  148. ansible/playbook/role/__init__.py +1 -1
  149. ansible/playbook/role/include.py +1 -1
  150. ansible/playbook/role/metadata.py +1 -1
  151. ansible/playbook/role_include.py +1 -1
  152. ansible/playbook/task.py +2 -2
  153. ansible/playbook/task_include.py +1 -24
  154. ansible/plugins/__init__.py +13 -5
  155. ansible/plugins/action/__init__.py +17 -43
  156. ansible/plugins/action/add_host.py +2 -3
  157. ansible/plugins/action/assemble.py +1 -1
  158. ansible/plugins/action/assert.py +2 -1
  159. ansible/plugins/action/copy.py +2 -2
  160. ansible/plugins/action/debug.py +2 -1
  161. ansible/plugins/action/fail.py +1 -0
  162. ansible/plugins/action/fetch.py +3 -1
  163. ansible/plugins/action/gather_facts.py +37 -13
  164. ansible/plugins/action/group_by.py +1 -0
  165. ansible/plugins/action/include_vars.py +3 -2
  166. ansible/plugins/action/normal.py +3 -3
  167. ansible/plugins/action/pause.py +1 -1
  168. ansible/plugins/action/reboot.py +21 -16
  169. ansible/plugins/action/script.py +23 -8
  170. ansible/plugins/action/set_fact.py +1 -0
  171. ansible/plugins/action/set_stats.py +1 -0
  172. ansible/plugins/action/shell.py +6 -0
  173. ansible/plugins/action/template.py +1 -1
  174. ansible/plugins/action/unarchive.py +1 -1
  175. ansible/plugins/action/uri.py +1 -1
  176. ansible/plugins/action/validate_argument_spec.py +1 -0
  177. ansible/plugins/action/wait_for_connection.py +4 -4
  178. ansible/plugins/become/__init__.py +1 -1
  179. ansible/plugins/become/su.py +1 -1
  180. ansible/plugins/cache/__init__.py +1 -1
  181. ansible/plugins/callback/junit.py +1 -1
  182. ansible/plugins/callback/oneline.py +1 -1
  183. ansible/plugins/callback/tree.py +1 -1
  184. ansible/plugins/cliconf/__init__.py +2 -2
  185. ansible/plugins/connection/__init__.py +65 -37
  186. ansible/plugins/connection/local.py +9 -8
  187. ansible/plugins/connection/paramiko_ssh.py +34 -28
  188. ansible/plugins/connection/psrp.py +56 -43
  189. ansible/plugins/connection/ssh.py +67 -43
  190. ansible/plugins/connection/winrm.py +77 -30
  191. ansible/plugins/doc_fragments/constructed.py +4 -4
  192. ansible/plugins/doc_fragments/files.py +12 -12
  193. ansible/plugins/doc_fragments/inventory_cache.py +0 -6
  194. ansible/plugins/doc_fragments/result_format_callback.py +5 -5
  195. ansible/plugins/doc_fragments/shell_common.py +2 -2
  196. ansible/plugins/doc_fragments/shell_windows.py +1 -1
  197. ansible/plugins/doc_fragments/template_common.py +6 -6
  198. ansible/plugins/doc_fragments/url.py +10 -10
  199. ansible/plugins/doc_fragments/url_windows.py +15 -15
  200. ansible/plugins/doc_fragments/vars_plugin_staging.py +4 -4
  201. ansible/plugins/filter/b64decode.yml +1 -1
  202. ansible/plugins/filter/b64encode.yml +2 -2
  203. ansible/plugins/filter/bool.yml +5 -5
  204. ansible/plugins/filter/combine.yml +1 -1
  205. ansible/plugins/filter/commonpath.yml +2 -1
  206. ansible/plugins/filter/core.py +6 -8
  207. ansible/plugins/filter/dict2items.yml +11 -1
  208. ansible/plugins/filter/difference.yml +1 -0
  209. ansible/plugins/filter/encryption.py +1 -1
  210. ansible/plugins/filter/extract.yml +1 -1
  211. ansible/plugins/filter/flatten.yml +1 -1
  212. ansible/plugins/filter/from_yaml.yml +1 -1
  213. ansible/plugins/filter/from_yaml_all.yml +2 -2
  214. ansible/plugins/filter/hash.yml +1 -1
  215. ansible/plugins/filter/human_readable.yml +1 -1
  216. ansible/plugins/filter/human_to_bytes.yml +2 -2
  217. ansible/plugins/filter/intersect.yml +1 -0
  218. ansible/plugins/filter/mandatory.yml +7 -0
  219. ansible/plugins/filter/mathstuff.py +15 -17
  220. ansible/plugins/filter/normpath.yml +1 -1
  221. ansible/plugins/filter/path_join.yml +8 -1
  222. ansible/plugins/filter/realpath.yml +3 -2
  223. ansible/plugins/filter/regex_findall.yml +8 -2
  224. ansible/plugins/filter/regex_replace.yml +9 -3
  225. ansible/plugins/filter/regex_search.yml +8 -2
  226. ansible/plugins/filter/relpath.yml +2 -2
  227. ansible/plugins/filter/root.yml +1 -1
  228. ansible/plugins/filter/splitext.yml +1 -1
  229. ansible/plugins/filter/subelements.yml +2 -2
  230. ansible/plugins/filter/symmetric_difference.yml +1 -0
  231. ansible/plugins/filter/ternary.yml +5 -5
  232. ansible/plugins/filter/to_json.yml +7 -7
  233. ansible/plugins/filter/to_nice_json.yml +5 -5
  234. ansible/plugins/filter/to_yaml.yml +2 -2
  235. ansible/plugins/filter/type_debug.yml +1 -1
  236. ansible/plugins/filter/union.yml +1 -0
  237. ansible/plugins/filter/unvault.yml +2 -2
  238. ansible/plugins/filter/urldecode.yml +13 -32
  239. ansible/plugins/filter/urlsplit.py +1 -1
  240. ansible/plugins/filter/vault.yml +1 -1
  241. ansible/plugins/filter/zip.yml +1 -1
  242. ansible/plugins/filter/zip_longest.yml +1 -1
  243. ansible/plugins/inventory/__init__.py +1 -1
  244. ansible/plugins/inventory/advanced_host_list.py +1 -1
  245. ansible/plugins/inventory/constructed.py +2 -2
  246. ansible/plugins/inventory/host_list.py +1 -1
  247. ansible/plugins/inventory/ini.py +6 -3
  248. ansible/plugins/inventory/script.py +8 -2
  249. ansible/plugins/inventory/toml.py +1 -1
  250. ansible/plugins/inventory/yaml.py +1 -1
  251. ansible/plugins/list.py +21 -17
  252. ansible/plugins/loader.py +66 -88
  253. ansible/plugins/lookup/__init__.py +1 -1
  254. ansible/plugins/lookup/config.py +16 -6
  255. ansible/plugins/lookup/csvfile.py +7 -4
  256. ansible/plugins/lookup/env.py +1 -1
  257. ansible/plugins/lookup/file.py +5 -2
  258. ansible/plugins/lookup/fileglob.py +5 -2
  259. ansible/plugins/lookup/first_found.py +20 -14
  260. ansible/plugins/lookup/ini.py +6 -3
  261. ansible/plugins/lookup/lines.py +2 -1
  262. ansible/plugins/lookup/password.py +7 -7
  263. ansible/plugins/lookup/pipe.py +1 -0
  264. ansible/plugins/lookup/random_choice.py +2 -2
  265. ansible/plugins/lookup/sequence.py +1 -1
  266. ansible/plugins/lookup/subelements.py +2 -2
  267. ansible/plugins/lookup/template.py +4 -1
  268. ansible/plugins/lookup/unvault.py +4 -1
  269. ansible/plugins/lookup/url.py +6 -6
  270. ansible/plugins/lookup/varnames.py +1 -1
  271. ansible/plugins/netconf/__init__.py +3 -3
  272. ansible/plugins/shell/__init__.py +1 -1
  273. ansible/plugins/shell/cmd.py +7 -7
  274. ansible/plugins/shell/powershell.py +1 -1
  275. ansible/plugins/strategy/__init__.py +8 -10
  276. ansible/plugins/strategy/free.py +1 -1
  277. ansible/plugins/strategy/linear.py +3 -3
  278. ansible/plugins/terminal/__init__.py +2 -2
  279. ansible/plugins/test/abs.yml +1 -1
  280. ansible/plugins/test/all.yml +1 -1
  281. ansible/plugins/test/any.yml +1 -1
  282. ansible/plugins/test/change.yml +2 -2
  283. ansible/plugins/test/changed.yml +2 -2
  284. ansible/plugins/test/contains.yml +1 -1
  285. ansible/plugins/test/core.py +1 -1
  286. ansible/plugins/test/directory.yml +1 -1
  287. ansible/plugins/test/exists.yml +3 -2
  288. ansible/plugins/test/failed.yml +2 -2
  289. ansible/plugins/test/failure.yml +2 -2
  290. ansible/plugins/test/falsy.yml +2 -2
  291. ansible/plugins/test/file.yml +1 -1
  292. ansible/plugins/test/finished.yml +2 -2
  293. ansible/plugins/test/is_abs.yml +1 -1
  294. ansible/plugins/test/is_dir.yml +1 -1
  295. ansible/plugins/test/is_file.yml +1 -1
  296. ansible/plugins/test/is_link.yml +1 -1
  297. ansible/plugins/test/is_mount.yml +1 -1
  298. ansible/plugins/test/is_same_file.yml +1 -1
  299. ansible/plugins/test/isnan.yml +1 -1
  300. ansible/plugins/test/issubset.yml +1 -2
  301. ansible/plugins/test/issuperset.yml +1 -2
  302. ansible/plugins/test/link.yml +1 -1
  303. ansible/plugins/test/link_exists.yml +1 -1
  304. ansible/plugins/test/match.yml +2 -2
  305. ansible/plugins/test/mount.yml +1 -1
  306. ansible/plugins/test/nan.yml +1 -1
  307. ansible/plugins/test/reachable.yml +2 -2
  308. ansible/plugins/test/regex.yml +1 -1
  309. ansible/plugins/test/same_file.yml +1 -1
  310. ansible/plugins/test/search.yml +2 -2
  311. ansible/plugins/test/skip.yml +3 -3
  312. ansible/plugins/test/skipped.yml +3 -3
  313. ansible/plugins/test/started.yml +2 -2
  314. ansible/plugins/test/subset.yml +1 -2
  315. ansible/plugins/test/succeeded.yml +2 -2
  316. ansible/plugins/test/success.yml +2 -2
  317. ansible/plugins/test/successful.yml +2 -2
  318. ansible/plugins/test/superset.yml +1 -2
  319. ansible/plugins/test/truthy.yml +3 -3
  320. ansible/plugins/test/unreachable.yml +2 -2
  321. ansible/plugins/test/uri.yml +1 -1
  322. ansible/plugins/test/url.yml +1 -1
  323. ansible/plugins/test/urn.yml +1 -1
  324. ansible/plugins/test/vault_encrypted.yml +1 -1
  325. ansible/plugins/test/version.yml +7 -7
  326. ansible/plugins/test/version_compare.yml +7 -7
  327. ansible/plugins/vars/host_group_vars.py +1 -1
  328. ansible/release.py +2 -2
  329. ansible/template/__init__.py +24 -26
  330. ansible/template/native_helpers.py +1 -1
  331. ansible/template/vars.py +1 -1
  332. ansible/utils/_junit_xml.py +1 -1
  333. ansible/utils/cmd_functions.py +1 -1
  334. ansible/utils/collection_loader/_collection_finder.py +12 -1
  335. ansible/utils/display.py +113 -62
  336. ansible/utils/encrypt.py +11 -14
  337. ansible/utils/hashing.py +1 -1
  338. ansible/utils/jsonrpc.py +1 -1
  339. ansible/utils/path.py +1 -1
  340. ansible/utils/plugin_docs.py +1 -1
  341. ansible/utils/py3compat.py +1 -1
  342. ansible/utils/shlex.py +2 -10
  343. ansible/utils/ssh_functions.py +5 -4
  344. ansible/utils/unicode.py +1 -1
  345. ansible/utils/unsafe_proxy.py +1 -1
  346. ansible/utils/vars.py +4 -29
  347. ansible/vars/hostvars.py +1 -2
  348. ansible/vars/manager.py +13 -9
  349. ansible/vars/plugins.py +2 -2
  350. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/COPYING +4 -5
  351. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/METADATA +2 -4
  352. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/RECORD +424 -425
  353. ansible_test/_data/completion/docker.txt +9 -9
  354. ansible_test/_data/completion/remote.txt +4 -7
  355. ansible_test/_data/completion/windows.txt +0 -2
  356. ansible_test/_data/requirements/ansible-test.txt +2 -1
  357. ansible_test/_data/requirements/ansible.txt +0 -3
  358. ansible_test/_data/requirements/constraints.txt +0 -2
  359. ansible_test/_data/requirements/sanity.ansible-doc.txt +3 -5
  360. ansible_test/_data/requirements/sanity.changelog.in +1 -2
  361. ansible_test/_data/requirements/sanity.changelog.txt +4 -6
  362. ansible_test/_data/requirements/sanity.import.plugin.txt +2 -4
  363. ansible_test/_data/requirements/sanity.import.txt +1 -3
  364. ansible_test/_data/requirements/sanity.integration-aliases.txt +1 -3
  365. ansible_test/_data/requirements/sanity.mypy.txt +12 -12
  366. ansible_test/_data/requirements/sanity.pep8.txt +1 -1
  367. ansible_test/_data/requirements/sanity.pylint.txt +6 -12
  368. ansible_test/_data/requirements/sanity.runtime-metadata.txt +1 -3
  369. ansible_test/_data/requirements/sanity.validate-modules.in +1 -1
  370. ansible_test/_data/requirements/sanity.validate-modules.txt +3 -5
  371. ansible_test/_data/requirements/sanity.yamllint.txt +3 -5
  372. ansible_test/_data/requirements/units.txt +0 -1
  373. ansible_test/_internal/ci/azp.py +4 -4
  374. ansible_test/_internal/cli/environments.py +0 -13
  375. ansible_test/_internal/commands/coverage/analyze/targets/__init__.py +4 -4
  376. ansible_test/_internal/commands/coverage/combine.py +1 -1
  377. ansible_test/_internal/commands/integration/cloud/acme.py +6 -8
  378. ansible_test/_internal/commands/integration/cloud/cs.py +4 -9
  379. ansible_test/_internal/commands/integration/cloud/galaxy.py +103 -96
  380. ansible_test/_internal/commands/integration/cloud/httptester.py +0 -3
  381. ansible_test/_internal/commands/integration/cloud/nios.py +7 -9
  382. ansible_test/_internal/commands/integration/cloud/openshift.py +2 -7
  383. ansible_test/_internal/commands/integration/cloud/vcenter.py +11 -95
  384. ansible_test/_internal/commands/sanity/__init__.py +10 -0
  385. ansible_test/_internal/commands/sanity/import.py +8 -2
  386. ansible_test/_internal/commands/sanity/pylint.py +27 -1
  387. ansible_test/_internal/commands/units/__init__.py +2 -1
  388. ansible_test/_internal/config.py +0 -7
  389. ansible_test/_internal/containers.py +11 -56
  390. ansible_test/_internal/core_ci.py +0 -7
  391. ansible_test/_internal/coverage_util.py +8 -3
  392. ansible_test/_internal/delegation.py +0 -1
  393. ansible_test/_internal/diff.py +1 -1
  394. ansible_test/_internal/docker_util.py +9 -2
  395. ansible_test/_internal/host_profiles.py +6 -6
  396. ansible_test/_internal/http.py +1 -1
  397. ansible_test/_internal/junit_xml.py +1 -1
  398. ansible_test/_internal/pypi_proxy.py +1 -1
  399. ansible_test/_internal/python_requirements.py +3 -8
  400. ansible_test/_internal/util.py +1 -6
  401. ansible_test/_util/controller/sanity/code-smell/no-get-exception.json +4 -0
  402. ansible_test/_util/controller/sanity/code-smell/replace-urlopen.json +4 -0
  403. ansible_test/_util/controller/sanity/code-smell/use-compat-six.json +4 -0
  404. ansible_test/_util/controller/sanity/mypy/ansible-core.ini +3 -0
  405. ansible_test/_util/controller/sanity/pylint/config/ansible-test-target.cfg +2 -0
  406. ansible_test/_util/controller/sanity/pylint/config/ansible-test.cfg +0 -1
  407. ansible_test/_util/controller/sanity/pylint/config/collection.cfg +1 -0
  408. ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py +172 -10
  409. ansible_test/_util/controller/sanity/pylint/plugins/string_format.py +13 -2
  410. ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py +7 -1
  411. ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py +6 -6
  412. ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py +1 -1
  413. ansible_test/_util/controller/sanity/validate-modules/validate_modules/utils.py +1 -1
  414. ansible_test/_util/controller/sanity/yamllint/yamllinter.py +3 -3
  415. ansible_test/_util/controller/tools/collection_detail.py +2 -2
  416. ansible_test/_util/target/common/constants.py +2 -2
  417. ansible_test/_util/target/pytest/plugins/ansible_forked.py +103 -0
  418. ansible_test/_util/target/sanity/import/importer.py +0 -8
  419. ansible_test/_util/target/setup/bootstrap.sh +36 -16
  420. ansible_test/_util/target/setup/quiet_pip.py +0 -4
  421. ansible/modules/_include.py +0 -80
  422. ansible_test/_internal/commands/integration/cloud/foreman.py +0 -102
  423. ansible_test/_util/target/setup/ConfigureRemotingForAnsible.ps1 +0 -435
  424. {ansible_core-2.15.4rc1.data → ansible_core-2.16.0b2.data}/scripts/ansible-test +0 -0
  425. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/WHEEL +0 -0
  426. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/entry_points.txt +0 -0
  427. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/top_level.txt +0 -0
@@ -39,7 +39,7 @@ DOCUMENTATION = """
39
39
  default: ''
40
40
  case_sensitive:
41
41
  description:
42
- Whether key names read from C(file) should be case sensitive. This prevents
42
+ Whether key names read from O(file) should be case sensitive. This prevents
43
43
  duplicate key errors if keys only differ in case.
44
44
  default: False
45
45
  version_added: '2.12'
@@ -50,6 +50,9 @@ DOCUMENTATION = """
50
50
  default: False
51
51
  aliases: ['allow_none']
52
52
  version_added: '2.12'
53
+ seealso:
54
+ - ref: playbook_task_paths
55
+ description: Search paths used for relative files.
53
56
  """
54
57
 
55
58
  EXAMPLES = """
@@ -85,7 +88,7 @@ from collections import defaultdict
85
88
  from collections.abc import MutableSequence
86
89
 
87
90
  from ansible.errors import AnsibleLookupError, AnsibleOptionsError
88
- from ansible.module_utils._text import to_text, to_native
91
+ from ansible.module_utils.common.text.converters import to_text, to_native
89
92
  from ansible.plugins.lookup import LookupBase
90
93
 
91
94
 
@@ -187,7 +190,7 @@ class LookupModule(LookupBase):
187
190
  config.seek(0, os.SEEK_SET)
188
191
 
189
192
  try:
190
- self.cp.readfp(config)
193
+ self.cp.read_file(config)
191
194
  except configparser.DuplicateOptionError as doe:
192
195
  raise AnsibleLookupError("Duplicate option in '{file}': {error}".format(file=paramvals['file'], error=to_native(doe)))
193
196
 
@@ -20,6 +20,7 @@ DOCUMENTATION = """
20
20
  - Like all lookups, this runs on the Ansible controller and is unaffected by other keywords such as 'become'.
21
21
  If you need to use different permissions, you must change the command or run Ansible as another user.
22
22
  - Alternatively, you can use a shell/command task that runs against localhost and registers the result.
23
+ - The directory of the play is used as the current working directory.
23
24
  """
24
25
 
25
26
  EXAMPLES = """
@@ -44,7 +45,7 @@ RETURN = """
44
45
  import subprocess
45
46
  from ansible.errors import AnsibleError
46
47
  from ansible.plugins.lookup import LookupBase
47
- from ansible.module_utils._text import to_text
48
+ from ansible.module_utils.common.text.converters import to_text
48
49
 
49
50
 
50
51
  class LookupModule(LookupBase):
@@ -28,17 +28,18 @@ DOCUMENTATION = """
28
28
  required: True
29
29
  encrypt:
30
30
  description:
31
- - Which hash scheme to encrypt the returning password, should be one hash scheme from C(passlib.hash; md5_crypt, bcrypt, sha256_crypt, sha512_crypt).
31
+ - Which hash scheme to encrypt the returning password, should be one hash scheme from C(passlib.hash);
32
+ V(md5_crypt), V(bcrypt), V(sha256_crypt), V(sha512_crypt).
32
33
  - If not provided, the password will be returned in plain text.
33
34
  - Note that the password is always stored as plain text, only the returning password is encrypted.
34
35
  - Encrypt also forces saving the salt value for idempotence.
35
36
  - Note that before 2.6 this option was incorrectly labeled as a boolean for a long time.
36
37
  ident:
37
38
  description:
38
- - Specify version of Bcrypt algorithm to be used while using C(encrypt) as C(bcrypt).
39
- - The parameter is only available for C(bcrypt) - U(https://passlib.readthedocs.io/en/stable/lib/passlib.hash.bcrypt.html#passlib.hash.bcrypt).
39
+ - Specify version of Bcrypt algorithm to be used while using O(encrypt) as V(bcrypt).
40
+ - The parameter is only available for V(bcrypt) - U(https://passlib.readthedocs.io/en/stable/lib/passlib.hash.bcrypt.html#passlib.hash.bcrypt).
40
41
  - Other hash types will simply ignore this parameter.
41
- - 'Valid values for this parameter are: C(2), C(2a), C(2y), C(2b).'
42
+ - 'Valid values for this parameter are: V(2), V(2a), V(2y), V(2b).'
42
43
  type: string
43
44
  version_added: "2.12"
44
45
  chars:
@@ -46,8 +47,7 @@ DOCUMENTATION = """
46
47
  description:
47
48
  - A list of names that compose a custom character set in the generated passwords.
48
49
  - This parameter defines the possible character sets in the resulting password, not the required character sets.
49
- If you want to require certain character sets for passwords, you can use the C(community.general.random_string lookup) plugin -
50
- P(community.general.random_string#lookup).
50
+ If you want to require certain character sets for passwords, you can use the P(community.general.random_string#lookup) lookup plugin.
51
51
  - 'By default generated passwords contain a random mix of upper and lowercase ASCII letters, the numbers 0-9, and punctuation (". , : - _").'
52
52
  - "They can be either parts of Python's string module attributes or represented literally ( :, -)."
53
53
  - "Though string modules can vary by Python version, valid values for both major releases include:
@@ -133,7 +133,7 @@ import time
133
133
  import hashlib
134
134
 
135
135
  from ansible.errors import AnsibleError, AnsibleAssertionError
136
- from ansible.module_utils._text import to_bytes, to_native, to_text
136
+ from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
137
137
  from ansible.module_utils.six import string_types
138
138
  from ansible.parsing.splitter import parse_kv
139
139
  from ansible.plugins.lookup import LookupBase
@@ -24,6 +24,7 @@ DOCUMENTATION = r"""
24
24
  It is strongly recommended to pass user input or variable input via quote filter before using with pipe lookup.
25
25
  See example section for this.
26
26
  Read more about this L(Bandit B602 docs,https://bandit.readthedocs.io/en/latest/plugins/b602_subprocess_popen_with_shell_equals_true.html)
27
+ - The directory of the play is used as the current working directory.
27
28
  """
28
29
 
29
30
  EXAMPLES = r"""
@@ -35,13 +35,13 @@ RETURN = """
35
35
  import random
36
36
 
37
37
  from ansible.errors import AnsibleError
38
- from ansible.module_utils._text import to_native
38
+ from ansible.module_utils.common.text.converters import to_native
39
39
  from ansible.plugins.lookup import LookupBase
40
40
 
41
41
 
42
42
  class LookupModule(LookupBase):
43
43
 
44
- def run(self, terms, inject=None, **kwargs):
44
+ def run(self, terms, variables=None, **kwargs):
45
45
 
46
46
  ret = terms
47
47
  if terms:
@@ -175,7 +175,7 @@ class LookupModule(LookupBase):
175
175
  if not match:
176
176
  return False
177
177
 
178
- _, start, end, _, stride, _, format = match.groups()
178
+ dummy, start, end, dummy, stride, dummy, format = match.groups()
179
179
 
180
180
  if start is not None:
181
181
  try:
@@ -19,8 +19,8 @@ DOCUMENTATION = """
19
19
  default: False
20
20
  description:
21
21
  - Lookup accepts this flag from a dictionary as optional. See Example section for more information.
22
- - If set to C(True), the lookup plugin will skip the lists items that do not contain the given subkey.
23
- - If set to C(False), the plugin will yield an error and complain about the missing subkey.
22
+ - If set to V(True), the lookup plugin will skip the lists items that do not contain the given subkey.
23
+ - If set to V(False), the plugin will yield an error and complain about the missing subkey.
24
24
  """
25
25
 
26
26
  EXAMPLES = """
@@ -56,6 +56,9 @@ DOCUMENTATION = """
56
56
  version_added: '2.12'
57
57
  type: str
58
58
  default: '#}'
59
+ seealso:
60
+ - ref: playbook_task_paths
61
+ description: Search paths used for relative templates.
59
62
  """
60
63
 
61
64
  EXAMPLES = """
@@ -86,7 +89,7 @@ import ansible.constants as C
86
89
 
87
90
  from ansible.errors import AnsibleError
88
91
  from ansible.plugins.lookup import LookupBase
89
- from ansible.module_utils._text import to_text
92
+ from ansible.module_utils.common.text.converters import to_text
90
93
  from ansible.template import generate_ansible_template_vars, AnsibleEnvironment
91
94
  from ansible.utils.display import Display
92
95
  from ansible.utils.native_jinja import NativeJinjaText
@@ -16,6 +16,9 @@ DOCUMENTATION = """
16
16
  required: True
17
17
  notes:
18
18
  - This lookup does not understand 'globbing' nor shell environment variables.
19
+ seealso:
20
+ - ref: playbook_task_paths
21
+ description: Search paths used for relative files.
19
22
  """
20
23
 
21
24
  EXAMPLES = """
@@ -32,7 +35,7 @@ RETURN = """
32
35
 
33
36
  from ansible.errors import AnsibleParserError
34
37
  from ansible.plugins.lookup import LookupBase
35
- from ansible.module_utils._text import to_text
38
+ from ansible.module_utils.common.text.converters import to_text
36
39
  from ansible.utils.display import Display
37
40
 
38
41
  display = Display()
@@ -64,7 +64,7 @@ options:
64
64
  - section: url_lookup
65
65
  key: timeout
66
66
  http_agent:
67
- description: User-Agent to use in the request. The default was changed in 2.11 to C(ansible-httpget).
67
+ description: User-Agent to use in the request. The default was changed in 2.11 to V(ansible-httpget).
68
68
  type: string
69
69
  version_added: "2.10"
70
70
  default: ansible-httpget
@@ -81,12 +81,12 @@ options:
81
81
  version_added: "2.10"
82
82
  default: False
83
83
  vars:
84
- - name: ansible_lookup_url_agent
84
+ - name: ansible_lookup_url_force_basic_auth
85
85
  env:
86
- - name: ANSIBLE_LOOKUP_URL_AGENT
86
+ - name: ANSIBLE_LOOKUP_URL_FORCE_BASIC_AUTH
87
87
  ini:
88
88
  - section: url_lookup
89
- key: agent
89
+ key: force_basic_auth
90
90
  follow_redirects:
91
91
  description: String of urllib2, all/yes, safe, none to determine how redirects are followed, see RedirectHandlerFactory for more information
92
92
  type: string
@@ -102,7 +102,7 @@ options:
102
102
  use_gssapi:
103
103
  description:
104
104
  - Use GSSAPI handler of requests
105
- - As of Ansible 2.11, GSSAPI credentials can be specified with I(username) and I(password).
105
+ - As of Ansible 2.11, GSSAPI credentials can be specified with O(username) and O(password).
106
106
  type: boolean
107
107
  version_added: "2.10"
108
108
  default: False
@@ -211,7 +211,7 @@ RETURN = """
211
211
  from urllib.error import HTTPError, URLError
212
212
 
213
213
  from ansible.errors import AnsibleError
214
- from ansible.module_utils._text import to_text, to_native
214
+ from ansible.module_utils.common.text.converters import to_text, to_native
215
215
  from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
216
216
  from ansible.plugins.lookup import LookupBase
217
217
  from ansible.utils.display import Display
@@ -46,7 +46,7 @@ _value:
46
46
  import re
47
47
 
48
48
  from ansible.errors import AnsibleError
49
- from ansible.module_utils._text import to_native
49
+ from ansible.module_utils.common.text.converters import to_native
50
50
  from ansible.module_utils.six import string_types
51
51
  from ansible.plugins.lookup import LookupBase
52
52
 
@@ -24,7 +24,7 @@ from functools import wraps
24
24
 
25
25
  from ansible.errors import AnsibleError
26
26
  from ansible.plugins import AnsiblePlugin
27
- from ansible.module_utils._text import to_native
27
+ from ansible.module_utils.common.text.converters import to_native
28
28
  from ansible.module_utils.basic import missing_required_lib
29
29
 
30
30
  try:
@@ -62,8 +62,8 @@ class NetconfBase(AnsiblePlugin):
62
62
  :class:`TerminalBase` plugins are byte strings. This is because of
63
63
  how close to the underlying platform these plugins operate. Remember
64
64
  to mark literal strings as byte string (``b"string"``) and to use
65
- :func:`~ansible.module_utils._text.to_bytes` and
66
- :func:`~ansible.module_utils._text.to_text` to avoid unexpected
65
+ :func:`~ansible.module_utils.common.text.converters.to_bytes` and
66
+ :func:`~ansible.module_utils.common.text.converters.to_text` to avoid unexpected
67
67
  problems.
68
68
 
69
69
  List of supported rpc's:
@@ -27,7 +27,7 @@ import time
27
27
  from collections.abc import Mapping, Sequence
28
28
 
29
29
  from ansible.errors import AnsibleError
30
- from ansible.module_utils._text import to_native
30
+ from ansible.module_utils.common.text.converters import to_native
31
31
  from ansible.module_utils.six import text_type, string_types
32
32
  from ansible.plugins import AnsiblePlugin
33
33
 
@@ -34,24 +34,24 @@ class ShellModule(PSShellModule):
34
34
  # Used by various parts of Ansible to do Windows specific changes
35
35
  _IS_WINDOWS = True
36
36
 
37
- def quote(self, s):
37
+ def quote(self, cmd):
38
38
  # cmd does not support single quotes that the shlex_quote uses. We need to override the quoting behaviour to
39
39
  # better match cmd.exe.
40
40
  # https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/
41
41
 
42
42
  # Return an empty argument
43
- if not s:
43
+ if not cmd:
44
44
  return '""'
45
45
 
46
- if _find_unsafe(s) is None:
47
- return s
46
+ if _find_unsafe(cmd) is None:
47
+ return cmd
48
48
 
49
49
  # Escape the metachars as we are quoting the string to stop cmd from interpreting that metachar. For example
50
50
  # 'file &whoami.exe' would result in 'file $(whoami.exe)' instead of the literal string
51
51
  # https://stackoverflow.com/questions/3411771/multiple-character-replace-with-python
52
52
  for c in '^()%!"<>&|': # '^' must be the first char that we scan and replace
53
- if c in s:
53
+ if c in cmd:
54
54
  # I can't find any docs that explicitly say this but to escape ", it needs to be prefixed with \^.
55
- s = s.replace(c, ("\\^" if c == '"' else "^") + c)
55
+ cmd = cmd.replace(c, ("\\^" if c == '"' else "^") + c)
56
56
 
57
- return '^"' + s + '^"'
57
+ return '^"' + cmd + '^"'
@@ -23,7 +23,7 @@ import pkgutil
23
23
  import xml.etree.ElementTree as ET
24
24
  import ntpath
25
25
 
26
- from ansible.module_utils._text import to_bytes, to_text
26
+ from ansible.module_utils.common.text.converters import to_bytes, to_text
27
27
  from ansible.plugins.shell import ShellBase
28
28
 
29
29
 
@@ -43,7 +43,7 @@ from ansible.executor.process.worker import WorkerProcess
43
43
  from ansible.executor.task_result import TaskResult
44
44
  from ansible.executor.task_queue_manager import CallbackSend, DisplaySend, PromptSend
45
45
  from ansible.module_utils.six import string_types
46
- from ansible.module_utils._text import to_text
46
+ from ansible.module_utils.common.text.converters import to_text
47
47
  from ansible.module_utils.connection import Connection, ConnectionError
48
48
  from ansible.playbook.conditional import Conditional
49
49
  from ansible.playbook.handler import Handler
@@ -54,7 +54,6 @@ from ansible.plugins import loader as plugin_loader
54
54
  from ansible.template import Templar
55
55
  from ansible.utils.display import Display
56
56
  from ansible.utils.fqcn import add_internal_fqcns
57
- from ansible.utils.multiprocessing import context as multiprocessing_context
58
57
  from ansible.utils.unsafe_proxy import wrap_var
59
58
  from ansible.utils.vars import combine_vars, isidentifier
60
59
  from ansible.vars.clean import strip_internal_keys, module_response_deepcopy
@@ -117,7 +116,8 @@ def results_thread_main(strategy):
117
116
  if isinstance(result, StrategySentinel):
118
117
  break
119
118
  elif isinstance(result, DisplaySend):
120
- display.display(*result.args, **result.kwargs)
119
+ dmethod = getattr(display, result.method)
120
+ dmethod(*result.args, **result.kwargs)
121
121
  elif isinstance(result, CallbackSend):
122
122
  for arg in result.args:
123
123
  if isinstance(arg, TaskResult):
@@ -571,10 +571,7 @@ class StrategyBase:
571
571
  Reads results off the final queue and takes appropriate action
572
572
  based on the result (executing callbacks, updating state, etc.).
573
573
  '''
574
-
575
574
  ret_results = []
576
- handler_templar = Templar(self._loader)
577
-
578
575
  cur_pass = 0
579
576
  while True:
580
577
  try:
@@ -605,7 +602,7 @@ class StrategyBase:
605
602
  else:
606
603
  iterator.mark_host_failed(original_host)
607
604
 
608
- state, _ = iterator.get_next_task_for_host(original_host, peek=True)
605
+ state, dummy = iterator.get_next_task_for_host(original_host, peek=True)
609
606
 
610
607
  if iterator.is_failed(original_host) and state and state.run_state == IteratingStates.COMPLETE:
611
608
  self._tqm._failed_hosts[original_host.name] = True
@@ -702,7 +699,7 @@ class StrategyBase:
702
699
  else:
703
700
  all_task_vars = found_task_vars
704
701
  all_task_vars[original_task.register] = wrap_var(result_item)
705
- post_process_whens(result_item, original_task, handler_templar, all_task_vars)
702
+ post_process_whens(result_item, original_task, Templar(self._loader), all_task_vars)
706
703
  if original_task.loop or original_task.loop_with:
707
704
  new_item_result = TaskResult(
708
705
  task_result._host,
@@ -1036,8 +1033,9 @@ class StrategyBase:
1036
1033
  # How would this work with allow_duplicates??
1037
1034
  if task.implicit:
1038
1035
  role_obj = self._get_cached_role(task, iterator._play)
1039
- role_obj._completed[target_host.name] = True
1040
- msg = 'role_complete for %s' % target_host.name
1036
+ if target_host.name in role_obj._had_task_run:
1037
+ role_obj._completed[target_host.name] = True
1038
+ msg = 'role_complete for %s' % target_host.name
1041
1039
  elif meta_action == 'reset_connection':
1042
1040
  all_vars = self._variable_manager.get_vars(play=iterator._play, host=target_host, task=task,
1043
1041
  _hosts=self._hosts_cache, _hosts_all=self._hosts_cache_all)
@@ -40,7 +40,7 @@ from ansible.playbook.included_file import IncludedFile
40
40
  from ansible.plugins.loader import action_loader
41
41
  from ansible.plugins.strategy import StrategyBase
42
42
  from ansible.template import Templar
43
- from ansible.module_utils._text import to_text
43
+ from ansible.module_utils.common.text.converters import to_text
44
44
  from ansible.utils.display import Display
45
45
 
46
46
  display = Display()
@@ -34,7 +34,7 @@ DOCUMENTATION = '''
34
34
  from ansible import constants as C
35
35
  from ansible.errors import AnsibleError, AnsibleAssertionError, AnsibleParserError
36
36
  from ansible.executor.play_iterator import IteratingStates, FailedStates
37
- from ansible.module_utils._text import to_text
37
+ from ansible.module_utils.common.text.converters import to_text
38
38
  from ansible.playbook.handler import Handler
39
39
  from ansible.playbook.included_file import IncludedFile
40
40
  from ansible.playbook.task import Task
@@ -77,7 +77,7 @@ class StrategyModule(StrategyBase):
77
77
 
78
78
  if self._in_handlers and not any(filter(
79
79
  lambda rs: rs == IteratingStates.HANDLERS,
80
- (s.run_state for s, _ in state_task_per_host.values()))
80
+ (s.run_state for s, dummy in state_task_per_host.values()))
81
81
  ):
82
82
  self._in_handlers = False
83
83
 
@@ -361,7 +361,7 @@ class StrategyModule(StrategyBase):
361
361
  if any_errors_fatal and (len(failed_hosts) > 0 or len(unreachable_hosts) > 0):
362
362
  dont_fail_states = frozenset([IteratingStates.RESCUE, IteratingStates.ALWAYS])
363
363
  for host in hosts_left:
364
- (s, _) = iterator.get_next_task_for_host(host, peek=True)
364
+ (s, dummy) = iterator.get_next_task_for_host(host, peek=True)
365
365
  # the state may actually be in a child state, use the get_active_state()
366
366
  # method in the iterator to figure out the true active state
367
367
  s = iterator.get_active_state(s)
@@ -34,8 +34,8 @@ class TerminalBase(ABC):
34
34
  :class:`TerminalBase` plugins are byte strings. This is because of
35
35
  how close to the underlying platform these plugins operate. Remember
36
36
  to mark literal strings as byte string (``b"string"``) and to use
37
- :func:`~ansible.module_utils._text.to_bytes` and
38
- :func:`~ansible.module_utils._text.to_text` to avoid unexpected
37
+ :func:`~ansible.module_utils.common.text.converters.to_bytes` and
38
+ :func:`~ansible.module_utils.common.text.converters.to_text` to avoid unexpected
39
39
  problems.
40
40
  '''
41
41
 
@@ -19,5 +19,5 @@ EXAMPLES: |
19
19
 
20
20
  RETURN:
21
21
  _value:
22
- description: Returns C(True) if the path is absolute, C(False) if it is relative.
22
+ description: Returns V(True) if the path is absolute, V(False) if it is relative.
23
23
  type: boolean
@@ -19,5 +19,5 @@ EXAMPLES: |
19
19
 
20
20
  RETURN:
21
21
  _value:
22
- description: Returns C(True) if all elements of the list were True, C(False) otherwise.
22
+ description: Returns V(True) if all elements of the list were True, V(False) otherwise.
23
23
  type: boolean
@@ -19,5 +19,5 @@ EXAMPLES: |
19
19
 
20
20
  RETURN:
21
21
  _value:
22
- description: Returns C(True) if any element of the list was true, C(False) otherwise.
22
+ description: Returns V(True) if any element of the list was true, V(False) otherwise.
23
23
  type: boolean
@@ -6,7 +6,7 @@ DOCUMENTATION:
6
6
  aliases: [change]
7
7
  description:
8
8
  - Tests if task required changes to complete
9
- - This test checks for the existance of a C(changed) key in the input dictionary and that it is C(True) if present
9
+ - This test checks for the existance of a C(changed) key in the input dictionary and that it is V(True) if present
10
10
  options:
11
11
  _input:
12
12
  description: registered result from an Ansible task
@@ -18,5 +18,5 @@ EXAMPLES: |
18
18
 
19
19
  RETURN:
20
20
  _value:
21
- description: Returns C(True) if the task was required changes, C(False) otherwise.
21
+ description: Returns V(True) if the task was required changes, V(False) otherwise.
22
22
  type: boolean
@@ -6,7 +6,7 @@ DOCUMENTATION:
6
6
  aliases: [change]
7
7
  description:
8
8
  - Tests if task required changes to complete
9
- - This test checks for the existance of a C(changed) key in the input dictionary and that it is C(True) if present
9
+ - This test checks for the existance of a C(changed) key in the input dictionary and that it is V(True) if present
10
10
  options:
11
11
  _input:
12
12
  description: registered result from an Ansible task
@@ -18,5 +18,5 @@ EXAMPLES: |
18
18
 
19
19
  RETURN:
20
20
  _value:
21
- description: Returns C(True) if the task was required changes, C(False) otherwise.
21
+ description: Returns V(True) if the task was required changes, V(False) otherwise.
22
22
  type: boolean
@@ -45,5 +45,5 @@ EXAMPLES: |
45
45
  - em4
46
46
  RETURN:
47
47
  _value:
48
- description: Returns C(True) if the specified element is contained in the supplied sequence, C(False) otherwise.
48
+ description: Returns V(True) if the specified element is contained in the supplied sequence, V(False) otherwise.
49
49
  type: boolean
@@ -27,7 +27,7 @@ from collections.abc import MutableMapping, MutableSequence
27
27
  from ansible.module_utils.compat.version import LooseVersion, StrictVersion
28
28
 
29
29
  from ansible import errors
30
- from ansible.module_utils._text import to_native, to_text
30
+ from ansible.module_utils.common.text.converters import to_native, to_text
31
31
  from ansible.module_utils.parsing.convert_bool import boolean
32
32
  from ansible.utils.display import Display
33
33
  from ansible.utils.version import SemanticVersion
@@ -17,5 +17,5 @@ EXAMPLES: |
17
17
 
18
18
  RETURN:
19
19
  _value:
20
- description: Returns C(True) if the path corresponds to an existing directory on the filesystem on the controller, c(False) if otherwise.
20
+ description: Returns V(True) if the path corresponds to an existing directory on the filesystem on the controller, V(False) if otherwise.
21
21
  type: boolean
@@ -5,7 +5,8 @@ DOCUMENTATION:
5
5
  short_description: does the path exist, follow symlinks
6
6
  description:
7
7
  - Check if the provided path maps to an existing filesystem object on the controller (localhost).
8
- - Follows symlinks and checks the target of the symlink instead of the link itself, use the C(link) or C(link_exists) tests to check on the link.
8
+ - Follows symlinks and checks the target of the symlink instead of the link itself, use the P(ansible.builtin.link#test)
9
+ or P(ansible.builtin.link_exists#test) tests to check on the link.
9
10
  options:
10
11
  _input:
11
12
  description: a path
@@ -18,5 +19,5 @@ EXAMPLES: |
18
19
 
19
20
  RETURN:
20
21
  _value:
21
- description: Returns C(True) if the path corresponds to an existing filesystem object on the controller (after following symlinks), C(False) if otherwise.
22
+ description: Returns V(True) if the path corresponds to an existing filesystem object on the controller (after following symlinks), V(False) if otherwise.
22
23
  type: boolean
@@ -6,7 +6,7 @@ DOCUMENTATION:
6
6
  aliases: [failure]
7
7
  description:
8
8
  - Tests if task finished in failure, opposite of C(succeeded).
9
- - This test checks for the existance of a C(failed) key in the input dictionary and that it is C(True) if present.
9
+ - This test checks for the existance of a C(failed) key in the input dictionary and that it is V(True) if present.
10
10
  - Tasks that get skipped or not executed due to other failures (syntax, templating, unreachable host, etc) do not return a 'failed' status.
11
11
  options:
12
12
  _input:
@@ -19,5 +19,5 @@ EXAMPLES: |
19
19
 
20
20
  RETURN:
21
21
  _value:
22
- description: Returns C(True) if the task was failed, C(False) otherwise.
22
+ description: Returns V(True) if the task was failed, V(False) otherwise.
23
23
  type: boolean
@@ -6,7 +6,7 @@ DOCUMENTATION:
6
6
  aliases: [failure]
7
7
  description:
8
8
  - Tests if task finished in failure, opposite of C(succeeded).
9
- - This test checks for the existance of a C(failed) key in the input dictionary and that it is C(True) if present.
9
+ - This test checks for the existance of a C(failed) key in the input dictionary and that it is V(True) if present.
10
10
  - Tasks that get skipped or not executed due to other failures (syntax, templating, unreachable host, etc) do not return a 'failed' status.
11
11
  options:
12
12
  _input:
@@ -19,5 +19,5 @@ EXAMPLES: |
19
19
 
20
20
  RETURN:
21
21
  _value:
22
- description: Returns C(True) if the task was failed, C(False) otherwise.
22
+ description: Returns V(True) if the task was failed, V(False) otherwise.
23
23
  type: boolean
@@ -12,7 +12,7 @@ DOCUMENTATION:
12
12
  type: string
13
13
  required: True
14
14
  convert_bool:
15
- description: Attempts to convert the result to a strict Python boolean vs normally acceptable values (C(yes)/C(no), C(on)/C(off), C(0)/C(1), etc).
15
+ description: Attempts to convert the result to a strict Python boolean vs normally acceptable values (V(yes)/V(no), V(on)/V(off), V(0)/V(1), etc).
16
16
  type: bool
17
17
  default: false
18
18
  EXAMPLES: |
@@ -20,5 +20,5 @@ EXAMPLES: |
20
20
  thisistrue: '{{ "" is falsy }}'
21
21
  RETURN:
22
22
  _value:
23
- description: Returns C(False) if the condition is not "Python truthy", C(True) otherwise.
23
+ description: Returns V(False) if the condition is not "Python truthy", V(True) otherwise.
24
24
  type: boolean
@@ -18,5 +18,5 @@ EXAMPLES: |
18
18
 
19
19
  RETURN:
20
20
  _value:
21
- description: Returns C(True) if the path corresponds to an existing file on the filesystem on the controller, C(False) if otherwise.
21
+ description: Returns V(True) if the path corresponds to an existing file on the filesystem on the controller, V(False) if otherwise.
22
22
  type: boolean
@@ -5,7 +5,7 @@ DOCUMENTATION:
5
5
  short_description: Did async task finish
6
6
  description:
7
7
  - Used to test if an async task has finished, it will aslo work with normal tasks but will issue a warning.
8
- - This test checks for the existance of a C(finished) key in the input dictionary and that it is C(1) if present
8
+ - This test checks for the existance of a C(finished) key in the input dictionary and that it is V(1) if present
9
9
  options:
10
10
  _input:
11
11
  description: registered result from an Ansible task
@@ -17,5 +17,5 @@ EXAMPLES: |
17
17
 
18
18
  RETURN:
19
19
  _value:
20
- description: Returns C(True) if the aysnc task has finished, C(False) otherwise.
20
+ description: Returns V(True) if the aysnc task has finished, V(False) otherwise.
21
21
  type: boolean
@@ -19,5 +19,5 @@ EXAMPLES: |
19
19
 
20
20
  RETURN:
21
21
  _value:
22
- description: Returns C(True) if the path is absolute, C(False) if it is relative.
22
+ description: Returns V(True) if the path is absolute, V(False) if it is relative.
23
23
  type: boolean
@@ -17,5 +17,5 @@ EXAMPLES: |
17
17
 
18
18
  RETURN:
19
19
  _value:
20
- description: Returns C(True) if the path corresponds to an existing directory on the filesystem on the controller, c(False) if otherwise.
20
+ description: Returns V(True) if the path corresponds to an existing directory on the filesystem on the controller, V(False) if otherwise.
21
21
  type: boolean
@@ -18,5 +18,5 @@ EXAMPLES: |
18
18
 
19
19
  RETURN:
20
20
  _value:
21
- description: Returns C(True) if the path corresponds to an existing file on the filesystem on the controller, C(False) if otherwise.
21
+ description: Returns V(True) if the path corresponds to an existing file on the filesystem on the controller, V(False) if otherwise.
22
22
  type: boolean
@@ -17,5 +17,5 @@ EXAMPLES: |
17
17
 
18
18
  RETURN:
19
19
  _value:
20
- description: Returns C(True) if the path corresponds to an existing symlink on the filesystem on the controller, C(False) if otherwise.
20
+ description: Returns V(True) if the path corresponds to an existing symlink on the filesystem on the controller, V(False) if otherwise.
21
21
  type: boolean