ansible-core 2.18.5rc1__py3-none-any.whl → 2.19.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.
- ansible/_internal/__init__.py +53 -0
- ansible/_internal/_ansiballz.py +265 -0
- ansible/_internal/_collection_proxy.py +47 -0
- ansible/_internal/_datatag/__init__.py +0 -0
- ansible/_internal/_datatag/_tags.py +130 -0
- ansible/_internal/_datatag/_utils.py +19 -0
- ansible/_internal/_datatag/_wrappers.py +33 -0
- ansible/_internal/_errors/__init__.py +0 -0
- ansible/_internal/_errors/_captured.py +128 -0
- ansible/_internal/_errors/_handler.py +91 -0
- ansible/_internal/_errors/_utils.py +310 -0
- ansible/_internal/_json/__init__.py +203 -0
- ansible/_internal/_json/_legacy_encoder.py +34 -0
- ansible/_internal/_json/_profiles/__init__.py +0 -0
- ansible/_internal/_json/_profiles/_cache_persistence.py +55 -0
- ansible/_internal/_json/_profiles/_inventory_legacy.py +40 -0
- ansible/_internal/_json/_profiles/_legacy.py +197 -0
- ansible/_internal/_locking.py +21 -0
- ansible/_internal/_plugins/__init__.py +0 -0
- ansible/_internal/_plugins/_cache.py +57 -0
- ansible/_internal/_task.py +78 -0
- ansible/_internal/_templating/__init__.py +10 -0
- ansible/_internal/_templating/_access.py +86 -0
- ansible/_internal/_templating/_chain_templar.py +63 -0
- ansible/_internal/_templating/_datatag.py +95 -0
- ansible/_internal/_templating/_engine.py +588 -0
- ansible/_internal/_templating/_errors.py +28 -0
- ansible/_internal/_templating/_jinja_bits.py +1066 -0
- ansible/_internal/_templating/_jinja_common.py +332 -0
- ansible/_internal/_templating/_jinja_patches.py +44 -0
- ansible/_internal/_templating/_jinja_plugins.py +345 -0
- ansible/_internal/_templating/_lazy_containers.py +633 -0
- ansible/_internal/_templating/_marker_behaviors.py +103 -0
- ansible/_internal/_templating/_transform.py +63 -0
- ansible/_internal/_templating/_utils.py +107 -0
- ansible/_internal/_wrapt.py +1052 -0
- ansible/_internal/_yaml/__init__.py +0 -0
- ansible/_internal/_yaml/_constructor.py +240 -0
- ansible/_internal/_yaml/_dumper.py +62 -0
- ansible/_internal/_yaml/_errors.py +166 -0
- ansible/_internal/_yaml/_loader.py +66 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/README.md +11 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/action/debug.py +36 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/apply_trust.py +19 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/dump_object.py +18 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/finalize.py +16 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/origin.py +18 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/python_literal_eval.py +24 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/python_literal_eval.yml +33 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/tag_names.py +16 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/true_type.py +17 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/unmask.py +49 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/lookup/config.py +21 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/lookup/config.yml +2 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged.py +15 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged.yml +19 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged_with.py +18 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged_with.yml +19 -0
- ansible/cli/__init__.py +159 -89
- ansible/cli/_ssh_askpass.py +47 -0
- ansible/cli/adhoc.py +14 -7
- ansible/cli/arguments/option_helpers.py +154 -7
- ansible/cli/config.py +43 -68
- ansible/cli/console.py +10 -8
- ansible/cli/doc.py +62 -53
- ansible/cli/galaxy.py +27 -20
- ansible/cli/inventory.py +28 -26
- ansible/cli/playbook.py +4 -12
- ansible/cli/pull.py +51 -11
- ansible/cli/scripts/ansible_connection_cli_stub.py +7 -7
- ansible/cli/vault.py +12 -11
- ansible/compat/__init__.py +2 -2
- ansible/config/base.yml +166 -112
- ansible/config/manager.py +52 -49
- ansible/constants.py +3 -4
- ansible/errors/__init__.py +277 -235
- ansible/executor/interpreter_discovery.py +28 -149
- ansible/executor/module_common.py +426 -493
- ansible/executor/play_iterator.py +22 -27
- ansible/executor/playbook_executor.py +11 -11
- ansible/executor/powershell/async_watchdog.ps1 +97 -102
- ansible/executor/powershell/async_wrapper.ps1 +202 -151
- ansible/executor/powershell/become_wrapper.ps1 +89 -144
- ansible/executor/powershell/bootstrap_wrapper.ps1 +24 -9
- ansible/executor/powershell/coverage_wrapper.ps1 +82 -135
- ansible/executor/powershell/exec_wrapper.ps1 +462 -196
- ansible/executor/powershell/module_manifest.py +417 -265
- ansible/executor/powershell/module_wrapper.ps1 +169 -186
- ansible/executor/powershell/psrp_fetch_file.ps1 +41 -0
- ansible/executor/powershell/psrp_put_file.ps1 +122 -0
- ansible/executor/powershell/winrm_fetch_file.ps1 +46 -0
- ansible/executor/powershell/winrm_put_file.ps1 +36 -0
- ansible/executor/process/worker.py +161 -96
- ansible/executor/stats.py +5 -5
- ansible/executor/task_executor.py +268 -258
- ansible/executor/task_queue_manager.py +124 -90
- ansible/executor/task_result.py +183 -78
- ansible/galaxy/__init__.py +2 -2
- ansible/galaxy/api.py +22 -18
- ansible/galaxy/collection/__init__.py +1 -1
- ansible/galaxy/collection/concrete_artifact_manager.py +8 -11
- ansible/galaxy/dependency_resolution/dataclasses.py +14 -4
- ansible/galaxy/dependency_resolution/providers.py +1 -1
- ansible/galaxy/dependency_resolution/reporters.py +81 -0
- ansible/galaxy/role.py +4 -8
- ansible/galaxy/token.py +28 -21
- ansible/inventory/data.py +47 -57
- ansible/inventory/group.py +44 -72
- ansible/inventory/helpers.py +9 -0
- ansible/inventory/host.py +32 -54
- ansible/inventory/manager.py +78 -34
- ansible/keyword_desc.yml +1 -1
- ansible/module_utils/_internal/__init__.py +55 -0
- ansible/module_utils/_internal/_ambient_context.py +58 -0
- ansible/module_utils/_internal/_ansiballz.py +133 -0
- ansible/module_utils/_internal/_concurrent/_daemon_threading.py +1 -0
- ansible/module_utils/_internal/_dataclass_annotation_patch.py +64 -0
- ansible/module_utils/_internal/_dataclass_validation.py +217 -0
- ansible/module_utils/_internal/_datatag/__init__.py +928 -0
- ansible/module_utils/_internal/_datatag/_tags.py +38 -0
- ansible/module_utils/_internal/_debugging.py +31 -0
- ansible/module_utils/_internal/_errors.py +30 -0
- ansible/module_utils/_internal/_json/__init__.py +63 -0
- ansible/module_utils/_internal/_json/_legacy_encoder.py +26 -0
- ansible/module_utils/_internal/_json/_profiles/__init__.py +410 -0
- ansible/module_utils/_internal/_json/_profiles/_fallback_to_str.py +73 -0
- ansible/module_utils/_internal/_json/_profiles/_module_legacy_c2m.py +31 -0
- ansible/module_utils/_internal/_json/_profiles/_module_legacy_m2c.py +35 -0
- ansible/module_utils/_internal/_json/_profiles/_module_modern_c2m.py +35 -0
- ansible/module_utils/_internal/_json/_profiles/_module_modern_m2c.py +33 -0
- ansible/module_utils/_internal/_json/_profiles/_tagless.py +50 -0
- ansible/module_utils/_internal/_patches/__init__.py +66 -0
- ansible/module_utils/_internal/_patches/_dataclass_annotation_patch.py +55 -0
- ansible/module_utils/_internal/_patches/_socket_patch.py +34 -0
- ansible/module_utils/_internal/_patches/_sys_intern_patch.py +34 -0
- ansible/module_utils/_internal/_plugin_exec_context.py +49 -0
- ansible/module_utils/_internal/_testing.py +0 -0
- ansible/module_utils/_internal/_traceback.py +89 -0
- ansible/module_utils/ansible_release.py +2 -2
- ansible/module_utils/api.py +1 -2
- ansible/module_utils/basic.py +152 -120
- ansible/module_utils/common/_utils.py +24 -28
- ansible/module_utils/common/collections.py +1 -2
- ansible/module_utils/common/dict_transformations.py +2 -2
- ansible/module_utils/common/file.py +2 -2
- ansible/module_utils/common/json.py +90 -84
- ansible/module_utils/common/locale.py +2 -2
- ansible/module_utils/common/messages.py +108 -0
- ansible/module_utils/common/parameters.py +27 -24
- ansible/module_utils/common/process.py +2 -2
- ansible/module_utils/common/respawn.py +41 -19
- ansible/module_utils/common/sentinel.py +66 -0
- ansible/module_utils/common/sys_info.py +8 -8
- ansible/module_utils/common/text/converters.py +16 -37
- ansible/module_utils/common/validation.py +35 -24
- ansible/module_utils/common/warnings.py +86 -25
- ansible/module_utils/common/yaml.py +29 -3
- ansible/module_utils/compat/datetime.py +33 -21
- ansible/module_utils/compat/paramiko.py +21 -10
- ansible/module_utils/compat/typing.py +6 -5
- ansible/module_utils/connection.py +2 -2
- ansible/module_utils/csharp/Ansible.Basic.cs +14 -11
- ansible/module_utils/csharp/Ansible.Become.cs +1 -0
- ansible/module_utils/csharp/Ansible._Async.cs +517 -0
- ansible/module_utils/datatag.py +46 -0
- ansible/module_utils/distro/__init__.py +2 -2
- ansible/module_utils/facts/ansible_collector.py +4 -5
- ansible/module_utils/facts/collector.py +13 -14
- ansible/module_utils/facts/compat.py +4 -4
- ansible/module_utils/facts/default_collectors.py +1 -1
- ansible/module_utils/facts/hardware/aix.py +34 -0
- ansible/module_utils/facts/hardware/base.py +1 -1
- ansible/module_utils/facts/hardware/darwin.py +1 -3
- ansible/module_utils/facts/hardware/freebsd.py +2 -2
- ansible/module_utils/facts/hardware/linux.py +4 -4
- ansible/module_utils/facts/namespace.py +1 -1
- ansible/module_utils/facts/network/base.py +1 -1
- ansible/module_utils/facts/network/fc_wwn.py +1 -2
- ansible/module_utils/facts/network/iscsi.py +1 -2
- ansible/module_utils/facts/network/nvme.py +1 -2
- ansible/module_utils/facts/other/facter.py +1 -2
- ansible/module_utils/facts/other/ohai.py +2 -3
- ansible/module_utils/facts/system/apparmor.py +1 -2
- ansible/module_utils/facts/system/caps.py +1 -1
- ansible/module_utils/facts/system/chroot.py +1 -2
- ansible/module_utils/facts/system/cmdline.py +1 -2
- ansible/module_utils/facts/system/date_time.py +5 -3
- ansible/module_utils/facts/system/distribution.py +9 -8
- ansible/module_utils/facts/system/dns.py +1 -1
- ansible/module_utils/facts/system/env.py +1 -2
- ansible/module_utils/facts/system/fips.py +7 -20
- ansible/module_utils/facts/system/loadavg.py +1 -2
- ansible/module_utils/facts/system/local.py +1 -2
- ansible/module_utils/facts/system/lsb.py +1 -2
- ansible/module_utils/facts/system/pkg_mgr.py +1 -2
- ansible/module_utils/facts/system/platform.py +1 -2
- ansible/module_utils/facts/system/python.py +1 -2
- ansible/module_utils/facts/system/selinux.py +1 -1
- ansible/module_utils/facts/system/service_mgr.py +1 -2
- ansible/module_utils/facts/system/ssh_pub_keys.py +1 -1
- ansible/module_utils/facts/system/systemd.py +1 -1
- ansible/module_utils/facts/system/user.py +1 -2
- ansible/module_utils/facts/utils.py +3 -3
- ansible/module_utils/facts/virtual/base.py +1 -1
- ansible/module_utils/facts/virtual/sunos.py +3 -15
- ansible/module_utils/facts/virtual/sysctl.py +3 -16
- ansible/module_utils/json_utils.py +2 -2
- ansible/module_utils/parsing/convert_bool.py +1 -1
- ansible/module_utils/service.py +18 -21
- ansible/module_utils/splitter.py +7 -7
- ansible/module_utils/testing.py +31 -0
- ansible/module_utils/urls.py +60 -31
- ansible/modules/add_host.py +4 -4
- ansible/modules/apt.py +60 -46
- ansible/modules/apt_key.py +19 -12
- ansible/modules/apt_repository.py +19 -16
- ansible/modules/assemble.py +6 -6
- ansible/modules/assert.py +4 -4
- ansible/modules/async_status.py +10 -12
- ansible/modules/async_wrapper.py +8 -3
- ansible/modules/blockinfile.py +6 -7
- ansible/modules/command.py +10 -17
- ansible/modules/copy.py +57 -144
- ansible/modules/cron.py +20 -15
- ansible/modules/deb822_repository.py +8 -9
- ansible/modules/debconf.py +5 -5
- ansible/modules/debug.py +4 -4
- ansible/modules/dnf.py +8 -8
- ansible/modules/dnf5.py +39 -13
- ansible/modules/dpkg_selections.py +4 -4
- ansible/modules/expect.py +8 -10
- ansible/modules/fail.py +4 -4
- ansible/modules/fetch.py +4 -4
- ansible/modules/file.py +174 -133
- ansible/modules/find.py +19 -17
- ansible/modules/gather_facts.py +3 -3
- ansible/modules/get_url.py +59 -53
- ansible/modules/getent.py +7 -9
- ansible/modules/git.py +28 -25
- ansible/modules/group.py +6 -6
- ansible/modules/group_by.py +4 -4
- ansible/modules/hostname.py +13 -29
- ansible/modules/import_playbook.py +6 -6
- ansible/modules/import_role.py +6 -6
- ansible/modules/import_tasks.py +6 -6
- ansible/modules/include_role.py +6 -6
- ansible/modules/include_tasks.py +6 -6
- ansible/modules/include_vars.py +6 -6
- ansible/modules/iptables.py +86 -73
- ansible/modules/known_hosts.py +10 -10
- ansible/modules/lineinfile.py +5 -5
- ansible/modules/meta.py +4 -4
- ansible/modules/mount_facts.py +2 -2
- ansible/modules/package.py +4 -4
- ansible/modules/package_facts.py +22 -10
- ansible/modules/pause.py +6 -6
- ansible/modules/ping.py +6 -6
- ansible/modules/pip.py +10 -11
- ansible/modules/raw.py +4 -4
- ansible/modules/reboot.py +6 -6
- ansible/modules/replace.py +9 -13
- ansible/modules/rpm_key.py +7 -8
- ansible/modules/script.py +4 -4
- ansible/modules/service.py +7 -8
- ansible/modules/service_facts.py +87 -10
- ansible/modules/set_fact.py +5 -5
- ansible/modules/set_stats.py +4 -4
- ansible/modules/setup.py +2 -2
- ansible/modules/shell.py +6 -6
- ansible/modules/slurp.py +6 -6
- ansible/modules/stat.py +9 -23
- ansible/modules/subversion.py +15 -15
- ansible/modules/systemd.py +6 -6
- ansible/modules/systemd_service.py +6 -6
- ansible/modules/sysvinit.py +6 -6
- ansible/modules/tempfile.py +5 -6
- ansible/modules/template.py +6 -6
- ansible/modules/unarchive.py +32 -11
- ansible/modules/uri.py +33 -26
- ansible/modules/user.py +53 -34
- ansible/modules/validate_argument_spec.py +10 -7
- ansible/modules/wait_for.py +32 -27
- ansible/modules/wait_for_connection.py +6 -6
- ansible/modules/yum_repository.py +6 -6
- ansible/parsing/ajson.py +14 -32
- ansible/parsing/dataloader.py +99 -54
- ansible/parsing/mod_args.py +28 -44
- ansible/parsing/plugin_docs.py +21 -86
- ansible/parsing/quoting.py +1 -1
- ansible/parsing/splitter.py +27 -12
- ansible/parsing/utils/addresses.py +24 -24
- ansible/parsing/utils/jsonify.py +5 -1
- ansible/parsing/utils/yaml.py +32 -61
- ansible/parsing/vault/__init__.py +319 -87
- ansible/parsing/yaml/__init__.py +0 -18
- ansible/parsing/yaml/dumper.py +6 -120
- ansible/parsing/yaml/loader.py +6 -39
- ansible/parsing/yaml/objects.py +43 -335
- ansible/playbook/__init__.py +1 -1
- ansible/playbook/attribute.py +8 -3
- ansible/playbook/base.py +182 -132
- ansible/playbook/block.py +26 -24
- ansible/playbook/collectionsearch.py +1 -15
- ansible/playbook/conditional.py +3 -77
- ansible/playbook/handler.py +8 -2
- ansible/playbook/helpers.py +41 -53
- ansible/playbook/included_file.py +31 -27
- ansible/playbook/loop_control.py +2 -2
- ansible/playbook/play.py +85 -44
- ansible/playbook/play_context.py +12 -17
- ansible/playbook/playbook_include.py +14 -15
- ansible/playbook/role/__init__.py +24 -26
- ansible/playbook/role/definition.py +15 -17
- ansible/playbook/role/include.py +2 -4
- ansible/playbook/role/metadata.py +10 -11
- ansible/playbook/role_include.py +3 -3
- ansible/playbook/taggable.py +13 -8
- ansible/playbook/task.py +188 -118
- ansible/playbook/task_include.py +5 -5
- ansible/plugins/__init__.py +68 -21
- ansible/plugins/action/__init__.py +209 -176
- ansible/plugins/action/add_host.py +1 -1
- ansible/plugins/action/assemble.py +1 -1
- ansible/plugins/action/assert.py +54 -66
- ansible/plugins/action/copy.py +7 -11
- ansible/plugins/action/debug.py +37 -31
- ansible/plugins/action/dnf.py +3 -4
- ansible/plugins/action/fail.py +1 -1
- ansible/plugins/action/fetch.py +4 -5
- ansible/plugins/action/gather_facts.py +7 -6
- ansible/plugins/action/group_by.py +1 -1
- ansible/plugins/action/include_vars.py +10 -11
- ansible/plugins/action/package.py +3 -6
- ansible/plugins/action/pause.py +2 -2
- ansible/plugins/action/script.py +15 -8
- ansible/plugins/action/service.py +6 -11
- ansible/plugins/action/set_fact.py +3 -12
- ansible/plugins/action/set_stats.py +3 -8
- ansible/plugins/action/template.py +35 -59
- ansible/plugins/action/unarchive.py +1 -1
- ansible/plugins/action/validate_argument_spec.py +5 -5
- ansible/plugins/action/wait_for_connection.py +1 -1
- ansible/plugins/become/__init__.py +31 -8
- ansible/plugins/become/runas.py +71 -0
- ansible/plugins/become/su.py +13 -8
- ansible/plugins/become/sudo.py +19 -0
- ansible/plugins/cache/__init__.py +35 -44
- ansible/plugins/cache/base.py +8 -0
- ansible/plugins/cache/jsonfile.py +10 -16
- ansible/plugins/cache/memory.py +6 -12
- ansible/plugins/callback/__init__.py +284 -179
- ansible/plugins/callback/default.py +99 -92
- ansible/plugins/callback/junit.py +44 -39
- ansible/plugins/callback/minimal.py +28 -25
- ansible/plugins/callback/oneline.py +28 -21
- ansible/plugins/callback/tree.py +16 -11
- ansible/plugins/connection/__init__.py +47 -34
- ansible/plugins/connection/local.py +150 -54
- ansible/plugins/connection/paramiko_ssh.py +21 -18
- ansible/plugins/connection/psrp.py +76 -165
- ansible/plugins/connection/ssh.py +301 -78
- ansible/plugins/connection/winrm.py +58 -140
- ansible/plugins/doc_fragments/action_common_attributes.py +14 -14
- ansible/plugins/doc_fragments/action_core.py +6 -6
- ansible/plugins/doc_fragments/backup.py +2 -2
- ansible/plugins/doc_fragments/checksum_common.py +27 -0
- ansible/plugins/doc_fragments/constructed.py +6 -2
- ansible/plugins/doc_fragments/decrypt.py +2 -2
- ansible/plugins/doc_fragments/default_callback.py +2 -2
- ansible/plugins/doc_fragments/files.py +2 -2
- ansible/plugins/doc_fragments/inventory_cache.py +2 -2
- ansible/plugins/doc_fragments/result_format_callback.py +2 -2
- ansible/plugins/doc_fragments/return_common.py +2 -2
- ansible/plugins/doc_fragments/template_common.py +4 -4
- ansible/plugins/doc_fragments/url.py +17 -1
- ansible/plugins/doc_fragments/url_windows.py +2 -2
- ansible/plugins/doc_fragments/validate.py +2 -2
- ansible/plugins/doc_fragments/vars_plugin_staging.py +2 -2
- ansible/plugins/filter/__init__.py +6 -2
- ansible/plugins/filter/b64decode.yml +22 -0
- ansible/plugins/filter/b64encode.yml +22 -0
- ansible/plugins/filter/bool.yml +11 -4
- ansible/plugins/filter/core.py +225 -108
- ansible/plugins/filter/encryption.py +32 -32
- ansible/plugins/filter/flatten.yml +3 -2
- ansible/plugins/filter/human_to_bytes.yml +1 -1
- ansible/plugins/filter/mathstuff.py +30 -37
- ansible/plugins/filter/password_hash.yml +8 -0
- ansible/plugins/filter/regex_search.yml +1 -4
- ansible/plugins/filter/split.yml +1 -1
- ansible/plugins/filter/to_nice_yaml.yml +0 -4
- ansible/plugins/filter/to_yaml.yml +0 -4
- ansible/plugins/filter/unvault.yml +1 -1
- ansible/plugins/filter/urls.py +1 -1
- ansible/plugins/filter/urlsplit.py +8 -9
- ansible/plugins/filter/vault.yml +14 -9
- ansible/plugins/filter/win_basename.yml +6 -1
- ansible/plugins/filter/win_dirname.yml +5 -0
- ansible/plugins/inventory/__init__.py +97 -77
- ansible/plugins/inventory/advanced_host_list.py +7 -5
- ansible/plugins/inventory/auto.py +11 -4
- ansible/plugins/inventory/constructed.py +21 -24
- ansible/plugins/inventory/generator.py +16 -11
- ansible/plugins/inventory/host_list.py +7 -5
- ansible/plugins/inventory/ini.py +78 -44
- ansible/plugins/inventory/script.py +189 -119
- ansible/plugins/inventory/toml.py +16 -126
- ansible/plugins/inventory/yaml.py +10 -8
- ansible/plugins/list.py +3 -3
- ansible/plugins/loader.py +197 -82
- ansible/plugins/lookup/__init__.py +21 -4
- ansible/plugins/lookup/config.py +21 -35
- ansible/plugins/lookup/csvfile.py +3 -2
- ansible/plugins/lookup/dict.py +1 -6
- ansible/plugins/lookup/env.py +12 -9
- ansible/plugins/lookup/file.py +5 -8
- ansible/plugins/lookup/first_found.py +86 -55
- ansible/plugins/lookup/indexed_items.py +1 -10
- ansible/plugins/lookup/ini.py +14 -13
- ansible/plugins/lookup/items.py +1 -1
- ansible/plugins/lookup/lines.py +8 -1
- ansible/plugins/lookup/list.py +1 -1
- ansible/plugins/lookup/nested.py +2 -18
- ansible/plugins/lookup/password.py +5 -5
- ansible/plugins/lookup/pipe.py +5 -7
- ansible/plugins/lookup/sequence.py +18 -8
- ansible/plugins/lookup/subelements.py +1 -4
- ansible/plugins/lookup/template.py +42 -36
- ansible/plugins/lookup/together.py +0 -12
- ansible/plugins/lookup/unvault.py +1 -5
- ansible/plugins/lookup/url.py +2 -8
- ansible/plugins/lookup/vars.py +16 -24
- ansible/plugins/shell/__init__.py +2 -2
- ansible/plugins/shell/cmd.py +2 -2
- ansible/plugins/shell/powershell.py +39 -22
- ansible/plugins/shell/sh.py +3 -2
- ansible/plugins/strategy/__init__.py +159 -184
- ansible/plugins/strategy/debug.py +2 -2
- ansible/plugins/strategy/free.py +16 -31
- ansible/plugins/strategy/host_pinned.py +2 -2
- ansible/plugins/strategy/linear.py +41 -41
- ansible/plugins/terminal/__init__.py +4 -4
- ansible/plugins/test/__init__.py +7 -2
- ansible/plugins/test/core.py +55 -21
- ansible/plugins/test/files.py +1 -1
- ansible/plugins/test/mathstuff.py +3 -3
- ansible/plugins/test/uri.py +3 -3
- ansible/plugins/vars/host_group_vars.py +7 -14
- ansible/release.py +2 -2
- ansible/template/__init__.py +370 -944
- ansible/utils/__init__.py +0 -18
- ansible/utils/_ssh_agent.py +657 -0
- ansible/utils/collection_loader/__init__.py +52 -5
- ansible/utils/collection_loader/_collection_config.py +5 -6
- ansible/utils/collection_loader/_collection_finder.py +79 -93
- ansible/utils/collection_loader/_collection_meta.py +13 -8
- ansible/utils/display.py +433 -63
- ansible/utils/encrypt.py +27 -19
- ansible/utils/fqcn.py +2 -2
- ansible/utils/hashing.py +2 -2
- ansible/utils/helpers.py +2 -2
- ansible/utils/listify.py +8 -8
- ansible/utils/lock.py +2 -2
- ansible/utils/path.py +4 -4
- ansible/utils/plugin_docs.py +14 -13
- ansible/utils/sentinel.py +4 -62
- ansible/utils/singleton.py +2 -0
- ansible/utils/ssh_functions.py +1 -1
- ansible/utils/unsafe_proxy.py +23 -332
- ansible/utils/vars.py +51 -8
- ansible/utils/version.py +2 -2
- ansible/vars/clean.py +5 -5
- ansible/vars/hostvars.py +60 -90
- ansible/vars/manager.py +206 -282
- ansible/vars/reserved.py +8 -9
- ansible_core-2.19.0b2.dist-info/BSD-3-Clause.txt +28 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/METADATA +5 -4
- ansible_core-2.19.0b2.dist-info/RECORD +1072 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/WHEEL +1 -1
- ansible_test/_data/completion/docker.txt +7 -7
- ansible_test/_data/completion/remote.txt +6 -6
- ansible_test/_data/completion/windows.txt +1 -0
- ansible_test/_data/requirements/ansible.txt +2 -2
- ansible_test/_data/requirements/sanity.ansible-doc.txt +3 -3
- ansible_test/_data/requirements/sanity.changelog.txt +1 -1
- ansible_test/_data/requirements/sanity.import.plugin.txt +2 -2
- ansible_test/_data/requirements/sanity.pylint.txt +4 -4
- ansible_test/_data/requirements/sanity.validate-modules.txt +2 -2
- ansible_test/_data/requirements/sanity.yamllint.txt +1 -1
- ansible_test/_data/requirements/units.txt +1 -0
- ansible_test/_internal/__init__.py +1 -0
- ansible_test/_internal/ansible_util.py +2 -0
- ansible_test/_internal/become.py +1 -0
- ansible_test/_internal/bootstrap.py +1 -0
- ansible_test/_internal/cache.py +1 -0
- ansible_test/_internal/cgroup.py +1 -0
- ansible_test/_internal/ci/__init__.py +1 -0
- ansible_test/_internal/ci/azp.py +1 -0
- ansible_test/_internal/ci/local.py +1 -0
- ansible_test/_internal/classification/__init__.py +1 -0
- ansible_test/_internal/classification/common.py +1 -0
- ansible_test/_internal/classification/csharp.py +1 -0
- ansible_test/_internal/classification/powershell.py +1 -0
- ansible_test/_internal/classification/python.py +1 -0
- ansible_test/_internal/cli/__init__.py +1 -0
- ansible_test/_internal/cli/actions.py +1 -0
- ansible_test/_internal/cli/argparsing/__init__.py +1 -0
- ansible_test/_internal/cli/argparsing/actions.py +1 -0
- ansible_test/_internal/cli/argparsing/argcompletion.py +1 -0
- ansible_test/_internal/cli/argparsing/parsers.py +1 -0
- ansible_test/_internal/cli/commands/__init__.py +11 -0
- ansible_test/_internal/cli/commands/coverage/__init__.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/__init__.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/__init__.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/combine.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/expand.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/filter.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/generate.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/missing.py +1 -0
- ansible_test/_internal/cli/commands/coverage/combine.py +1 -0
- ansible_test/_internal/cli/commands/coverage/erase.py +1 -0
- ansible_test/_internal/cli/commands/coverage/html.py +1 -0
- ansible_test/_internal/cli/commands/coverage/report.py +1 -0
- ansible_test/_internal/cli/commands/coverage/xml.py +1 -0
- ansible_test/_internal/cli/commands/env.py +1 -0
- ansible_test/_internal/cli/commands/integration/__init__.py +1 -0
- ansible_test/_internal/cli/commands/integration/network.py +1 -0
- ansible_test/_internal/cli/commands/integration/posix.py +1 -0
- ansible_test/_internal/cli/commands/integration/windows.py +1 -0
- ansible_test/_internal/cli/commands/sanity.py +9 -0
- ansible_test/_internal/cli/commands/shell.py +1 -0
- ansible_test/_internal/cli/commands/units.py +1 -0
- ansible_test/_internal/cli/compat.py +1 -0
- ansible_test/_internal/cli/completers.py +1 -0
- ansible_test/_internal/cli/converters.py +1 -0
- ansible_test/_internal/cli/environments.py +1 -0
- ansible_test/_internal/cli/epilog.py +1 -0
- ansible_test/_internal/cli/parsers/__init__.py +1 -0
- ansible_test/_internal/cli/parsers/base_argument_parsers.py +1 -0
- ansible_test/_internal/cli/parsers/helpers.py +1 -0
- ansible_test/_internal/cli/parsers/host_config_parsers.py +1 -0
- ansible_test/_internal/cli/parsers/key_value_parsers.py +1 -0
- ansible_test/_internal/cli/parsers/value_parsers.py +1 -0
- ansible_test/_internal/commands/__init__.py +1 -0
- ansible_test/_internal/commands/coverage/__init__.py +2 -1
- ansible_test/_internal/commands/coverage/analyze/__init__.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/__init__.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/combine.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/expand.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/filter.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/generate.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/missing.py +1 -0
- ansible_test/_internal/commands/coverage/combine.py +2 -1
- ansible_test/_internal/commands/coverage/erase.py +1 -0
- ansible_test/_internal/commands/coverage/html.py +1 -0
- ansible_test/_internal/commands/coverage/report.py +1 -0
- ansible_test/_internal/commands/coverage/xml.py +1 -0
- ansible_test/_internal/commands/env/__init__.py +2 -0
- ansible_test/_internal/commands/integration/__init__.py +4 -0
- ansible_test/_internal/commands/integration/cloud/__init__.py +1 -0
- ansible_test/_internal/commands/integration/cloud/acme.py +2 -1
- ansible_test/_internal/commands/integration/cloud/aws.py +1 -0
- ansible_test/_internal/commands/integration/cloud/azure.py +1 -0
- ansible_test/_internal/commands/integration/cloud/cs.py +1 -0
- ansible_test/_internal/commands/integration/cloud/digitalocean.py +1 -0
- ansible_test/_internal/commands/integration/cloud/galaxy.py +3 -2
- ansible_test/_internal/commands/integration/cloud/hcloud.py +1 -0
- ansible_test/_internal/commands/integration/cloud/httptester.py +2 -1
- ansible_test/_internal/commands/integration/cloud/nios.py +2 -1
- ansible_test/_internal/commands/integration/cloud/opennebula.py +1 -0
- ansible_test/_internal/commands/integration/cloud/openshift.py +1 -0
- ansible_test/_internal/commands/integration/cloud/scaleway.py +1 -0
- ansible_test/_internal/commands/integration/cloud/vcenter.py +1 -0
- ansible_test/_internal/commands/integration/cloud/vultr.py +1 -0
- ansible_test/_internal/commands/integration/coverage.py +1 -0
- ansible_test/_internal/commands/integration/filters.py +1 -0
- ansible_test/_internal/commands/integration/network.py +1 -0
- ansible_test/_internal/commands/integration/posix.py +1 -0
- ansible_test/_internal/commands/integration/windows.py +1 -0
- ansible_test/_internal/commands/sanity/__init__.py +16 -1
- ansible_test/_internal/commands/sanity/ansible_doc.py +1 -0
- ansible_test/_internal/commands/sanity/bin_symlinks.py +1 -0
- ansible_test/_internal/commands/sanity/compile.py +1 -0
- ansible_test/_internal/commands/sanity/ignores.py +1 -0
- ansible_test/_internal/commands/sanity/import.py +1 -0
- ansible_test/_internal/commands/sanity/integration_aliases.py +1 -0
- ansible_test/_internal/commands/sanity/pep8.py +1 -0
- ansible_test/_internal/commands/sanity/pslint.py +1 -0
- ansible_test/_internal/commands/sanity/pylint.py +24 -26
- ansible_test/_internal/commands/sanity/shellcheck.py +1 -0
- ansible_test/_internal/commands/sanity/validate_modules.py +1 -0
- ansible_test/_internal/commands/sanity/yamllint.py +1 -0
- ansible_test/_internal/commands/shell/__init__.py +1 -0
- ansible_test/_internal/commands/units/__init__.py +1 -0
- ansible_test/_internal/compat/__init__.py +1 -0
- ansible_test/_internal/compat/packaging.py +1 -0
- ansible_test/_internal/compat/yaml.py +1 -0
- ansible_test/_internal/completion.py +1 -0
- ansible_test/_internal/config.py +2 -0
- ansible_test/_internal/connections.py +1 -0
- ansible_test/_internal/constants.py +1 -0
- ansible_test/_internal/containers.py +1 -0
- ansible_test/_internal/content_config.py +1 -0
- ansible_test/_internal/core_ci.py +1 -0
- ansible_test/_internal/coverage_util.py +11 -10
- ansible_test/_internal/data.py +1 -0
- ansible_test/_internal/delegation.py +1 -0
- ansible_test/_internal/dev/__init__.py +1 -0
- ansible_test/_internal/dev/container_probe.py +1 -0
- ansible_test/_internal/diff.py +3 -2
- ansible_test/_internal/docker_util.py +2 -1
- ansible_test/_internal/encoding.py +1 -0
- ansible_test/_internal/executor.py +1 -0
- ansible_test/_internal/git.py +1 -0
- ansible_test/_internal/host_configs.py +1 -0
- ansible_test/_internal/host_profiles.py +1 -0
- ansible_test/_internal/http.py +1 -0
- ansible_test/_internal/init.py +1 -0
- ansible_test/_internal/inventory.py +35 -3
- ansible_test/_internal/io.py +1 -0
- ansible_test/_internal/metadata.py +1 -0
- ansible_test/_internal/payload.py +1 -0
- ansible_test/_internal/provider/__init__.py +1 -0
- ansible_test/_internal/provider/layout/__init__.py +1 -0
- ansible_test/_internal/provider/layout/ansible.py +1 -0
- ansible_test/_internal/provider/layout/collection.py +1 -0
- ansible_test/_internal/provider/layout/unsupported.py +1 -0
- ansible_test/_internal/provider/source/__init__.py +1 -0
- ansible_test/_internal/provider/source/git.py +1 -0
- ansible_test/_internal/provider/source/installed.py +1 -0
- ansible_test/_internal/provider/source/unsupported.py +1 -0
- ansible_test/_internal/provider/source/unversioned.py +1 -0
- ansible_test/_internal/provisioning.py +1 -0
- ansible_test/_internal/pypi_proxy.py +6 -5
- ansible_test/_internal/python_requirements.py +1 -0
- ansible_test/_internal/ssh.py +1 -0
- ansible_test/_internal/target.py +1 -0
- ansible_test/_internal/test.py +3 -2
- ansible_test/_internal/thread.py +1 -0
- ansible_test/_internal/timeout.py +1 -0
- ansible_test/_internal/util.py +1 -0
- ansible_test/_internal/util_common.py +5 -2
- ansible_test/_internal/venv.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/action-plugin-docs.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/changelog/sphinx.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/changelog.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/empty-init.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/line-endings.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/no-assert.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/no-get-exception.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/no-illegal-filenames.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/no-smart-quotes.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/replace-urlopen.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/runtime-metadata.py +28 -1
- ansible_test/_util/controller/sanity/code-smell/shebang.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/symlinks.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/use-argspec-type-path.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/use-compat-six.py +1 -0
- ansible_test/_util/controller/sanity/integration-aliases/yaml_to_json.py +2 -1
- ansible_test/_util/controller/sanity/pep8/current-ignore.txt +4 -0
- ansible_test/_util/controller/sanity/pylint/config/ansible-test-target.cfg +7 -5
- ansible_test/_util/controller/sanity/pylint/config/ansible-test.cfg +7 -5
- ansible_test/_util/controller/sanity/pylint/config/code-smell.cfg +7 -5
- ansible_test/_util/controller/sanity/pylint/config/collection.cfg +3 -5
- ansible_test/_util/controller/sanity/pylint/config/default.cfg +7 -7
- ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py +1 -13
- ansible_test/_util/controller/sanity/pylint/plugins/hide_unraisable.py +1 -0
- ansible_test/_util/controller/sanity/pylint/plugins/string_format.py +1 -8
- ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py +1 -8
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py +55 -28
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py +12 -5
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py +13 -2
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/utils.py +1 -0
- ansible_test/_util/controller/sanity/yamllint/yamllinter.py +35 -17
- ansible_test/_util/controller/tools/collection_detail.py +1 -0
- ansible_test/_util/controller/tools/yaml_to_json.py +2 -1
- ansible_test/_util/target/pytest/plugins/ansible_forked.py +6 -1
- ansible_test/_util/target/pytest/plugins/ansible_pytest_collections.py +2 -1
- ansible_test/_util/target/pytest/plugins/ansible_pytest_coverage.py +1 -0
- ansible_test/_util/target/sanity/compile/compile.py +1 -0
- ansible_test/_util/target/sanity/import/importer.py +15 -16
- ansible_test/_util/target/setup/bootstrap.sh +9 -20
- ansible_test/_util/target/setup/probe_cgroups.py +1 -0
- ansible_test/_util/target/setup/quiet_pip.py +1 -0
- ansible_test/_util/target/setup/requirements.py +35 -27
- ansible_test/_util/target/tools/virtualenvcheck.py +2 -1
- ansible_test/_util/target/tools/yamlcheck.py +2 -1
- ansible/compat/selectors.py +0 -32
- ansible/errors/yaml_strings.py +0 -138
- ansible/executor/action_write_locks.py +0 -44
- ansible/executor/discovery/python_target.py +0 -47
- ansible/executor/powershell/module_powershell_wrapper.ps1 +0 -86
- ansible/executor/powershell/module_script_wrapper.ps1 +0 -22
- ansible/module_utils/compat/importlib.py +0 -26
- ansible/module_utils/compat/selectors.py +0 -32
- ansible/module_utils/pycompat24.py +0 -73
- ansible/parsing/yaml/constructor.py +0 -178
- ansible/template/native_helpers.py +0 -251
- ansible/template/template.py +0 -43
- ansible/template/vars.py +0 -77
- ansible/utils/native_jinja.py +0 -11
- ansible/vars/fact_cache.py +0 -71
- ansible_core-2.18.5rc1.dist-info/RECORD +0 -992
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/Apache-License.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/COPYING +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/MIT-license.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/PSF-license.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/entry_points.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/simplified_bsd.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/top_level.txt +0 -0
ansible/modules/set_fact.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION = r
|
9
|
+
DOCUMENTATION = r"""
|
10
10
|
---
|
11
11
|
module: set_fact
|
12
12
|
short_description: Set host variable(s) and fact(s).
|
@@ -66,7 +66,7 @@ notes:
|
|
66
66
|
- Because of the nature of tasks, set_fact will produce 'static' values for a variable.
|
67
67
|
Unlike normal 'lazy' variables, the value gets evaluated and templated on assignment.
|
68
68
|
- Some boolean values (yes, no, true, false) will always be converted to boolean type,
|
69
|
-
|
69
|
+
This is done so the C(var=value) booleans,
|
70
70
|
otherwise it would only be able to create strings, but it also prevents using those values to create YAML strings.
|
71
71
|
Using the setting will restrict k=v to strings, but will allow you to specify string or boolean in YAML.
|
72
72
|
- "To create lists/arrays or dictionary/hashes use YAML notation C(var: [val1, val2])."
|
@@ -77,9 +77,9 @@ seealso:
|
|
77
77
|
description: More information related to variable precedence and which type of variable wins over others.
|
78
78
|
author:
|
79
79
|
- Dag Wieers (@dagwieers)
|
80
|
-
|
80
|
+
"""
|
81
81
|
|
82
|
-
EXAMPLES = r
|
82
|
+
EXAMPLES = r"""
|
83
83
|
- name: Setting host facts using key=value pairs, this format can only create strings or booleans
|
84
84
|
ansible.builtin.set_fact: one_fact="something" other_fact="{{ local_var }}"
|
85
85
|
|
@@ -116,4 +116,4 @@ EXAMPLES = r'''
|
|
116
116
|
ansible.builtin.set_fact:
|
117
117
|
two_dict: {'something': here2, 'other': somewhere}
|
118
118
|
two_list: [1,2,3]
|
119
|
-
|
119
|
+
"""
|
ansible/modules/set_stats.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION = r
|
9
|
+
DOCUMENTATION = r"""
|
10
10
|
---
|
11
11
|
module: set_stats
|
12
12
|
short_description: Define and display stats for the current ansible run
|
@@ -56,9 +56,9 @@ notes:
|
|
56
56
|
- In order for custom stats to be displayed, you must set C(show_custom_stats) in section C([defaults]) in C(ansible.cfg)
|
57
57
|
or by defining environment variable C(ANSIBLE_SHOW_CUSTOM_STATS) to V(true). See the P(ansible.builtin.default#callback) callback plugin for details.
|
58
58
|
version_added: "2.3"
|
59
|
-
|
59
|
+
"""
|
60
60
|
|
61
|
-
EXAMPLES = r
|
61
|
+
EXAMPLES = r"""
|
62
62
|
- name: Aggregating packages_installed stat per host
|
63
63
|
ansible.builtin.set_stats:
|
64
64
|
data:
|
@@ -78,4 +78,4 @@ EXAMPLES = r'''
|
|
78
78
|
data:
|
79
79
|
the_answer: 42
|
80
80
|
aggregate: no
|
81
|
-
|
81
|
+
"""
|
ansible/modules/setup.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION =
|
9
|
+
DOCUMENTATION = """
|
10
10
|
---
|
11
11
|
module: setup
|
12
12
|
version_added: historical
|
@@ -110,7 +110,7 @@ notes:
|
|
110
110
|
author:
|
111
111
|
- "Ansible Core Team"
|
112
112
|
- "Michael DeHaan"
|
113
|
-
|
113
|
+
"""
|
114
114
|
|
115
115
|
EXAMPLES = r"""
|
116
116
|
# Display facts from all hosts and store them indexed by `hostname` at `/tmp/facts`.
|
ansible/modules/shell.py
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
from __future__ import annotations
|
11
11
|
|
12
12
|
|
13
|
-
DOCUMENTATION = r
|
13
|
+
DOCUMENTATION = r"""
|
14
14
|
---
|
15
15
|
module: shell
|
16
16
|
short_description: Execute shell commands on targets
|
@@ -99,9 +99,9 @@ seealso:
|
|
99
99
|
author:
|
100
100
|
- Ansible Core Team
|
101
101
|
- Michael DeHaan
|
102
|
-
|
102
|
+
"""
|
103
103
|
|
104
|
-
EXAMPLES = r
|
104
|
+
EXAMPLES = r"""
|
105
105
|
- name: Execute the command in remote shell; stdout goes to the specified file on the remote
|
106
106
|
ansible.builtin.shell: somescript.sh >> somelog.txt
|
107
107
|
|
@@ -150,9 +150,9 @@ EXAMPLES = r'''
|
|
150
150
|
args:
|
151
151
|
executable: /usr/bin/expect
|
152
152
|
delegate_to: localhost
|
153
|
-
|
153
|
+
"""
|
154
154
|
|
155
|
-
RETURN = r
|
155
|
+
RETURN = r"""
|
156
156
|
msg:
|
157
157
|
description: changed
|
158
158
|
returned: always
|
@@ -203,4 +203,4 @@ stderr_lines:
|
|
203
203
|
returned: always
|
204
204
|
type: list
|
205
205
|
sample: [u'ls cannot access foo: No such file or directory', u'ls …']
|
206
|
-
|
206
|
+
"""
|
ansible/modules/slurp.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION = r
|
9
|
+
DOCUMENTATION = r"""
|
10
10
|
---
|
11
11
|
module: slurp
|
12
12
|
version_added: historical
|
@@ -39,9 +39,9 @@ seealso:
|
|
39
39
|
author:
|
40
40
|
- Ansible Core Team
|
41
41
|
- Michael DeHaan (@mpdehaan)
|
42
|
-
|
42
|
+
"""
|
43
43
|
|
44
|
-
EXAMPLES = r
|
44
|
+
EXAMPLES = r"""
|
45
45
|
- name: Find out what the remote machine's mounts are
|
46
46
|
ansible.builtin.slurp:
|
47
47
|
src: /proc/mounts
|
@@ -61,9 +61,9 @@ EXAMPLES = r'''
|
|
61
61
|
# }
|
62
62
|
# $ echo MjE3OQo= | base64 -d
|
63
63
|
# 2179
|
64
|
-
|
64
|
+
"""
|
65
65
|
|
66
|
-
RETURN = r
|
66
|
+
RETURN = r"""
|
67
67
|
content:
|
68
68
|
description: Encoded file content
|
69
69
|
returned: success
|
@@ -79,7 +79,7 @@ source:
|
|
79
79
|
returned: success
|
80
80
|
type: str
|
81
81
|
sample: "/var/run/sshd.pid"
|
82
|
-
|
82
|
+
"""
|
83
83
|
|
84
84
|
import base64
|
85
85
|
import errno
|
ansible/modules/stat.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
from __future__ import annotations
|
6
6
|
|
7
7
|
|
8
|
-
DOCUMENTATION = r
|
8
|
+
DOCUMENTATION = r"""
|
9
9
|
---
|
10
10
|
module: stat
|
11
11
|
version_added: "1.3"
|
@@ -25,23 +25,6 @@ options:
|
|
25
25
|
- Whether to follow symlinks.
|
26
26
|
type: bool
|
27
27
|
default: no
|
28
|
-
get_checksum:
|
29
|
-
description:
|
30
|
-
- Whether to return a checksum of the file.
|
31
|
-
type: bool
|
32
|
-
default: yes
|
33
|
-
version_added: "1.8"
|
34
|
-
checksum_algorithm:
|
35
|
-
description:
|
36
|
-
- Algorithm to determine checksum of file.
|
37
|
-
- Will throw an error if the host is unable to use specified algorithm.
|
38
|
-
- The remote host has to support the hashing method specified, V(md5)
|
39
|
-
can be unavailable if the host is FIPS-140 compliant.
|
40
|
-
type: str
|
41
|
-
choices: [ md5, sha1, sha224, sha256, sha384, sha512 ]
|
42
|
-
default: sha1
|
43
|
-
aliases: [ checksum, checksum_algo ]
|
44
|
-
version_added: "2.0"
|
45
28
|
get_mime:
|
46
29
|
description:
|
47
30
|
- Use file magic and return data about the nature of the file. This uses
|
@@ -59,8 +42,11 @@ options:
|
|
59
42
|
default: yes
|
60
43
|
aliases: [ attr, attributes ]
|
61
44
|
version_added: "2.3"
|
45
|
+
get_checksum:
|
46
|
+
version_added: "1.8"
|
62
47
|
extends_documentation_fragment:
|
63
48
|
- action_common_attributes
|
49
|
+
- checksum_common
|
64
50
|
attributes:
|
65
51
|
check_mode:
|
66
52
|
support: full
|
@@ -72,9 +58,9 @@ seealso:
|
|
72
58
|
- module: ansible.builtin.file
|
73
59
|
- module: ansible.windows.win_stat
|
74
60
|
author: Bruce Pennypacker (@bpennypacker)
|
75
|
-
|
61
|
+
"""
|
76
62
|
|
77
|
-
EXAMPLES = r
|
63
|
+
EXAMPLES = r"""
|
78
64
|
# Obtain the stats of /etc/foo.conf, and check that the file still belongs
|
79
65
|
# to 'root'. Fail otherwise.
|
80
66
|
- name: Get stats of a file
|
@@ -137,9 +123,9 @@ EXAMPLES = r'''
|
|
137
123
|
ansible.builtin.stat:
|
138
124
|
path: /path/to/something
|
139
125
|
checksum_algorithm: sha256
|
140
|
-
|
126
|
+
"""
|
141
127
|
|
142
|
-
RETURN = r
|
128
|
+
RETURN = r"""
|
143
129
|
stat:
|
144
130
|
description: Dictionary containing all the stat data, some platforms might add additional fields.
|
145
131
|
returned: success
|
@@ -366,7 +352,7 @@ stat:
|
|
366
352
|
type: str
|
367
353
|
sample: "381700746"
|
368
354
|
version_added: 2.3
|
369
|
-
|
355
|
+
"""
|
370
356
|
|
371
357
|
import errno
|
372
358
|
import grp
|
ansible/modules/subversion.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION =
|
9
|
+
DOCUMENTATION = """
|
10
10
|
---
|
11
11
|
module: subversion
|
12
12
|
short_description: Deploys a subversion repository
|
@@ -106,9 +106,9 @@ notes:
|
|
106
106
|
|
107
107
|
requirements:
|
108
108
|
- subversion (the command line tool with C(svn) entrypoint)
|
109
|
-
|
109
|
+
"""
|
110
110
|
|
111
|
-
EXAMPLES =
|
111
|
+
EXAMPLES = """
|
112
112
|
- name: Checkout subversion repository to specified folder
|
113
113
|
ansible.builtin.subversion:
|
114
114
|
repo: svn+ssh://an.example.org/path/to/repo
|
@@ -126,9 +126,9 @@ EXAMPLES = '''
|
|
126
126
|
dest: /src/checkout
|
127
127
|
checkout: no
|
128
128
|
update: no
|
129
|
-
|
129
|
+
"""
|
130
130
|
|
131
|
-
RETURN = r
|
131
|
+
RETURN = r"""#"""
|
132
132
|
|
133
133
|
import os
|
134
134
|
import re
|
@@ -161,7 +161,7 @@ class Subversion(object):
|
|
161
161
|
return LooseVersion(version) >= LooseVersion('1.10.0')
|
162
162
|
|
163
163
|
def _exec(self, args, check_rc=True):
|
164
|
-
|
164
|
+
"""Execute a subversion command, and return output. If check_rc is False, returns the return code instead of the output."""
|
165
165
|
bits = [
|
166
166
|
self.svn_path,
|
167
167
|
'--non-interactive',
|
@@ -189,12 +189,12 @@ class Subversion(object):
|
|
189
189
|
return rc
|
190
190
|
|
191
191
|
def is_svn_repo(self):
|
192
|
-
|
192
|
+
"""Checks if path is a SVN Repo."""
|
193
193
|
rc = self._exec(["info", self.dest], check_rc=False)
|
194
194
|
return rc == 0
|
195
195
|
|
196
196
|
def checkout(self, force=False):
|
197
|
-
|
197
|
+
"""Creates new svn working directory if it does not already exist."""
|
198
198
|
cmd = ["checkout"]
|
199
199
|
if force:
|
200
200
|
cmd.append("--force")
|
@@ -202,7 +202,7 @@ class Subversion(object):
|
|
202
202
|
self._exec(cmd)
|
203
203
|
|
204
204
|
def export(self, force=False):
|
205
|
-
|
205
|
+
"""Export svn repo to directory"""
|
206
206
|
cmd = ["export"]
|
207
207
|
if force:
|
208
208
|
cmd.append("--force")
|
@@ -211,7 +211,7 @@ class Subversion(object):
|
|
211
211
|
self._exec(cmd)
|
212
212
|
|
213
213
|
def switch(self):
|
214
|
-
|
214
|
+
"""Change working directory's repo."""
|
215
215
|
# switch to ensure we are pointing at correct repo.
|
216
216
|
# it also updates!
|
217
217
|
output = self._exec(["switch", "--revision", self.revision, self.repo, self.dest])
|
@@ -221,7 +221,7 @@ class Subversion(object):
|
|
221
221
|
return False
|
222
222
|
|
223
223
|
def update(self):
|
224
|
-
|
224
|
+
"""Update existing svn working directory."""
|
225
225
|
output = self._exec(["update", "-r", self.revision, self.dest])
|
226
226
|
|
227
227
|
for line in output:
|
@@ -230,7 +230,7 @@ class Subversion(object):
|
|
230
230
|
return False
|
231
231
|
|
232
232
|
def revert(self):
|
233
|
-
|
233
|
+
"""Revert svn working directory."""
|
234
234
|
output = self._exec(["revert", "-R", self.dest])
|
235
235
|
for line in output:
|
236
236
|
if re.search(r'^Reverted ', line) is None:
|
@@ -238,7 +238,7 @@ class Subversion(object):
|
|
238
238
|
return False
|
239
239
|
|
240
240
|
def get_revision(self):
|
241
|
-
|
241
|
+
"""Revision and URL of subversion working directory."""
|
242
242
|
text = '\n'.join(self._exec(["info", self.dest]))
|
243
243
|
rev = re.search(self.REVISION_RE, text, re.MULTILINE)
|
244
244
|
if rev:
|
@@ -255,7 +255,7 @@ class Subversion(object):
|
|
255
255
|
return rev, url
|
256
256
|
|
257
257
|
def get_remote_revision(self):
|
258
|
-
|
258
|
+
"""Revision and URL of subversion working directory."""
|
259
259
|
text = '\n'.join(self._exec(["info", self.repo]))
|
260
260
|
rev = re.search(self.REVISION_RE, text, re.MULTILINE)
|
261
261
|
if rev:
|
@@ -265,7 +265,7 @@ class Subversion(object):
|
|
265
265
|
return rev
|
266
266
|
|
267
267
|
def has_local_mods(self):
|
268
|
-
|
268
|
+
"""True if revisioned files have been added or modified. Unrevisioned files are ignored."""
|
269
269
|
lines = self._exec(["status", "--quiet", "--ignore-externals", self.dest])
|
270
270
|
# The --quiet option will return only modified files.
|
271
271
|
# Match only revisioned files, i.e. ignore status '?'.
|
ansible/modules/systemd.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION =
|
9
|
+
DOCUMENTATION = """
|
10
10
|
module: systemd_service
|
11
11
|
author:
|
12
12
|
- Ansible Core Team
|
@@ -98,9 +98,9 @@ notes:
|
|
98
98
|
It has been reported that C(systemctl) can behave differently depending on the order of operations if you do the same manually.
|
99
99
|
requirements:
|
100
100
|
- A system managed by systemd.
|
101
|
-
|
101
|
+
"""
|
102
102
|
|
103
|
-
EXAMPLES =
|
103
|
+
EXAMPLES = """
|
104
104
|
- name: Make sure a service unit is running
|
105
105
|
ansible.builtin.systemd_service:
|
106
106
|
state: started
|
@@ -149,9 +149,9 @@ EXAMPLES = '''
|
|
149
149
|
scope: user
|
150
150
|
environment:
|
151
151
|
XDG_RUNTIME_DIR: "/run/user/{{ myuid }}"
|
152
|
-
|
152
|
+
"""
|
153
153
|
|
154
|
-
RETURN =
|
154
|
+
RETURN = """
|
155
155
|
status:
|
156
156
|
description: A dictionary with the key=value pairs returned from C(systemctl show).
|
157
157
|
returned: success
|
@@ -279,7 +279,7 @@ status:
|
|
279
279
|
"WatchdogTimestampMonotonic": "0",
|
280
280
|
"WatchdogUSec": "0",
|
281
281
|
}
|
282
|
-
|
282
|
+
""" # NOQA
|
283
283
|
|
284
284
|
import os
|
285
285
|
|
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION =
|
9
|
+
DOCUMENTATION = """
|
10
10
|
module: systemd_service
|
11
11
|
author:
|
12
12
|
- Ansible Core Team
|
@@ -98,9 +98,9 @@ notes:
|
|
98
98
|
It has been reported that C(systemctl) can behave differently depending on the order of operations if you do the same manually.
|
99
99
|
requirements:
|
100
100
|
- A system managed by systemd.
|
101
|
-
|
101
|
+
"""
|
102
102
|
|
103
|
-
EXAMPLES =
|
103
|
+
EXAMPLES = """
|
104
104
|
- name: Make sure a service unit is running
|
105
105
|
ansible.builtin.systemd_service:
|
106
106
|
state: started
|
@@ -149,9 +149,9 @@ EXAMPLES = '''
|
|
149
149
|
scope: user
|
150
150
|
environment:
|
151
151
|
XDG_RUNTIME_DIR: "/run/user/{{ myuid }}"
|
152
|
-
|
152
|
+
"""
|
153
153
|
|
154
|
-
RETURN =
|
154
|
+
RETURN = """
|
155
155
|
status:
|
156
156
|
description: A dictionary with the key=value pairs returned from C(systemctl show).
|
157
157
|
returned: success
|
@@ -279,7 +279,7 @@ status:
|
|
279
279
|
"WatchdogTimestampMonotonic": "0",
|
280
280
|
"WatchdogUSec": "0",
|
281
281
|
}
|
282
|
-
|
282
|
+
""" # NOQA
|
283
283
|
|
284
284
|
import os
|
285
285
|
|
ansible/modules/sysvinit.py
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
from __future__ import annotations
|
8
8
|
|
9
9
|
|
10
|
-
DOCUMENTATION =
|
10
|
+
DOCUMENTATION = """
|
11
11
|
module: sysvinit
|
12
12
|
author:
|
13
13
|
- "Ansible Core Team"
|
@@ -77,9 +77,9 @@ notes:
|
|
77
77
|
- The service names might vary by specific OS/distribution.
|
78
78
|
requirements:
|
79
79
|
- That the service managed has a corresponding init script.
|
80
|
-
|
80
|
+
"""
|
81
81
|
|
82
|
-
EXAMPLES =
|
82
|
+
EXAMPLES = """
|
83
83
|
- name: Make sure apache2 is started
|
84
84
|
ansible.builtin.sysvinit:
|
85
85
|
name: apache2
|
@@ -100,9 +100,9 @@ EXAMPLES = '''
|
|
100
100
|
runlevels:
|
101
101
|
- 3
|
102
102
|
- 5
|
103
|
-
|
103
|
+
"""
|
104
104
|
|
105
|
-
RETURN = r
|
105
|
+
RETURN = r"""
|
106
106
|
results:
|
107
107
|
description: results from actions taken
|
108
108
|
returned: always
|
@@ -131,7 +131,7 @@ results:
|
|
131
131
|
"stdout": "Stopping web server: apache2.\n"
|
132
132
|
}
|
133
133
|
}
|
134
|
-
|
134
|
+
"""
|
135
135
|
|
136
136
|
import re
|
137
137
|
from time import sleep
|
ansible/modules/tempfile.py
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
from __future__ import annotations
|
8
8
|
|
9
9
|
|
10
|
-
DOCUMENTATION =
|
10
|
+
DOCUMENTATION = """
|
11
11
|
---
|
12
12
|
module: tempfile
|
13
13
|
version_added: "2.3"
|
@@ -53,7 +53,7 @@ seealso:
|
|
53
53
|
- module: ansible.windows.win_tempfile
|
54
54
|
author:
|
55
55
|
- Krzysztof Magosa (@krzysztof-magosa)
|
56
|
-
|
56
|
+
"""
|
57
57
|
|
58
58
|
EXAMPLES = """
|
59
59
|
- name: Create temporary build directory
|
@@ -80,17 +80,16 @@ EXAMPLES = """
|
|
80
80
|
when: tempfile_1.path is defined
|
81
81
|
"""
|
82
82
|
|
83
|
-
RETURN =
|
83
|
+
RETURN = """
|
84
84
|
path:
|
85
85
|
description: Path to created file or directory.
|
86
86
|
returned: success
|
87
87
|
type: str
|
88
88
|
sample: "/tmp/ansible.bMlvdk"
|
89
|
-
|
89
|
+
"""
|
90
90
|
|
91
91
|
from os import close
|
92
92
|
from tempfile import mkstemp, mkdtemp
|
93
|
-
from traceback import format_exc
|
94
93
|
|
95
94
|
from ansible.module_utils.basic import AnsibleModule
|
96
95
|
from ansible.module_utils.common.text.converters import to_native
|
@@ -123,7 +122,7 @@ def main():
|
|
123
122
|
|
124
123
|
module.exit_json(changed=True, path=path)
|
125
124
|
except Exception as e:
|
126
|
-
module.fail_json(msg=to_native(e)
|
125
|
+
module.fail_json(msg=to_native(e))
|
127
126
|
|
128
127
|
|
129
128
|
if __name__ == '__main__':
|
ansible/modules/template.py
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
from __future__ import annotations
|
9
9
|
|
10
10
|
|
11
|
-
DOCUMENTATION = r
|
11
|
+
DOCUMENTATION = r"""
|
12
12
|
---
|
13
13
|
module: template
|
14
14
|
version_added: historical
|
@@ -60,9 +60,9 @@ attributes:
|
|
60
60
|
support: full
|
61
61
|
vault:
|
62
62
|
support: full
|
63
|
-
|
63
|
+
"""
|
64
64
|
|
65
|
-
EXAMPLES = r
|
65
|
+
EXAMPLES = r"""
|
66
66
|
- name: Template a file to /etc/file.conf
|
67
67
|
ansible.builtin.template:
|
68
68
|
src: /mytemplates/foo.j2
|
@@ -108,9 +108,9 @@ EXAMPLES = r'''
|
|
108
108
|
mode: '0600'
|
109
109
|
validate: /usr/sbin/sshd -t -f %s
|
110
110
|
backup: yes
|
111
|
-
|
111
|
+
"""
|
112
112
|
|
113
|
-
RETURN = r
|
113
|
+
RETURN = r"""
|
114
114
|
dest:
|
115
115
|
description: Destination file/path, equal to the value passed to I(dest).
|
116
116
|
returned: success
|
@@ -161,4 +161,4 @@ src:
|
|
161
161
|
returned: changed
|
162
162
|
type: str
|
163
163
|
sample: /home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source
|
164
|
-
|
164
|
+
"""
|
ansible/modules/unarchive.py
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
from __future__ import annotations
|
11
11
|
|
12
12
|
|
13
|
-
DOCUMENTATION = r
|
13
|
+
DOCUMENTATION = r"""
|
14
14
|
---
|
15
15
|
module: unarchive
|
16
16
|
version_added: '1.4'
|
@@ -150,9 +150,9 @@ seealso:
|
|
150
150
|
- module: community.general.iso_extract
|
151
151
|
- module: community.windows.win_unzip
|
152
152
|
author: Michael DeHaan
|
153
|
-
|
153
|
+
"""
|
154
154
|
|
155
|
-
EXAMPLES = r
|
155
|
+
EXAMPLES = r"""
|
156
156
|
- name: Extract foo.tgz into /var/lib/foo
|
157
157
|
ansible.builtin.unarchive:
|
158
158
|
src: foo.tgz
|
@@ -177,9 +177,9 @@ EXAMPLES = r'''
|
|
177
177
|
extra_opts:
|
178
178
|
- --transform
|
179
179
|
- s/^xxx/yyy/
|
180
|
-
|
180
|
+
"""
|
181
181
|
|
182
|
-
RETURN = r
|
182
|
+
RETURN = r"""
|
183
183
|
dest:
|
184
184
|
description: Path to the destination directory.
|
185
185
|
returned: always
|
@@ -237,10 +237,11 @@ uid:
|
|
237
237
|
returned: always
|
238
238
|
type: int
|
239
239
|
sample: 1000
|
240
|
-
|
240
|
+
"""
|
241
241
|
|
242
242
|
import binascii
|
243
243
|
import codecs
|
244
|
+
import ctypes
|
244
245
|
import fnmatch
|
245
246
|
import grp
|
246
247
|
import os
|
@@ -249,7 +250,6 @@ import pwd
|
|
249
250
|
import re
|
250
251
|
import stat
|
251
252
|
import time
|
252
|
-
import traceback
|
253
253
|
from functools import partial
|
254
254
|
from zipfile import ZipFile
|
255
255
|
|
@@ -262,6 +262,13 @@ from ansible.module_utils.urls import fetch_file
|
|
262
262
|
from shlex import quote
|
263
263
|
from zipfile import BadZipFile
|
264
264
|
|
265
|
+
try:
|
266
|
+
from functools import cache
|
267
|
+
except ImportError:
|
268
|
+
# Python < 3.9
|
269
|
+
from functools import lru_cache
|
270
|
+
cache = lru_cache(maxsize=None)
|
271
|
+
|
265
272
|
# String from tar that shows the tar contents are different from the
|
266
273
|
# filesystem
|
267
274
|
OWNER_DIFF_RE = re.compile(r': Uid differs$')
|
@@ -279,8 +286,20 @@ CONTENT_DIFF_RE = re.compile(r': Contents differ$')
|
|
279
286
|
SIZE_DIFF_RE = re.compile(r': Size differs$')
|
280
287
|
|
281
288
|
|
289
|
+
@cache
|
290
|
+
def _y2038_impacted():
|
291
|
+
"""Determine if the system has 64-bit time_t."""
|
292
|
+
if hasattr(ctypes, "c_time_t"): # Python >= 3.12
|
293
|
+
return ctypes.sizeof(ctypes.c_time_t) < 8
|
294
|
+
try:
|
295
|
+
time.gmtime(2**31)
|
296
|
+
except OverflowError:
|
297
|
+
return True
|
298
|
+
return False
|
299
|
+
|
300
|
+
|
282
301
|
def crc32(path, buffer_size):
|
283
|
-
|
302
|
+
""" Return a CRC32 checksum of a file """
|
284
303
|
|
285
304
|
crc = binascii.crc32(b'')
|
286
305
|
with open(path, 'rb') as f:
|
@@ -290,7 +309,7 @@ def crc32(path, buffer_size):
|
|
290
309
|
|
291
310
|
|
292
311
|
def shell_escape(string):
|
293
|
-
|
312
|
+
""" Quote meta-characters in the args for the unix shell """
|
294
313
|
return re.sub(r'([^A-Za-z0-9_])', r'\\\1', string)
|
295
314
|
|
296
315
|
|
@@ -321,7 +340,7 @@ class ZipArchive(object):
|
|
321
340
|
)
|
322
341
|
|
323
342
|
def _permstr_to_octal(self, modestr, umask):
|
324
|
-
|
343
|
+
""" Convert a Unix permission string (rw-r--r--) into a mode (0644) """
|
325
344
|
revstr = modestr[::-1]
|
326
345
|
mode = 0
|
327
346
|
for j in range(0, 3):
|
@@ -414,6 +433,8 @@ class ZipArchive(object):
|
|
414
433
|
try:
|
415
434
|
if int(match.groups()[0]) < 1980:
|
416
435
|
date_time = epoch_date_time
|
436
|
+
elif int(match.groups()[0]) >= 2038 and _y2038_impacted():
|
437
|
+
date_time = (2038, 1, 1, 0, 0, 0, 0, 0, 0)
|
417
438
|
elif int(match.groups()[0]) > 2107:
|
418
439
|
date_time = (2107, 12, 31, 23, 59, 59, 0, 0, 0)
|
419
440
|
else:
|
@@ -676,7 +697,7 @@ class ZipArchive(object):
|
|
676
697
|
try:
|
677
698
|
mode = AnsibleModule._symbolic_mode_to_octal(st, self.file_args['mode'])
|
678
699
|
except ValueError as e:
|
679
|
-
self.module.fail_json(path=path, msg="%s" % to_native(e)
|
700
|
+
self.module.fail_json(path=path, msg="%s" % to_native(e))
|
680
701
|
# Only special files require no umask-handling
|
681
702
|
elif ztype == '?':
|
682
703
|
mode = self._permstr_to_octal(permstr, 0)
|