ansible-core 2.16.6__py3-none-any.whl → 2.17.0rc1__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.
- ansible/__init__.py +1 -3
- ansible/__main__.py +1 -0
- ansible/_vendor/__init__.py +1 -2
- ansible/cli/__init__.py +7 -8
- ansible/cli/adhoc.py +1 -2
- ansible/cli/arguments/__init__.py +1 -2
- ansible/cli/arguments/option_helpers.py +1 -2
- ansible/cli/config.py +1 -2
- ansible/cli/console.py +1 -2
- ansible/cli/doc.py +320 -198
- ansible/cli/galaxy.py +9 -3
- ansible/cli/inventory.py +4 -6
- ansible/cli/playbook.py +1 -2
- ansible/cli/pull.py +4 -5
- ansible/cli/scripts/ansible_connection_cli_stub.py +1 -4
- ansible/cli/vault.py +1 -2
- ansible/collections/list.py +1 -0
- ansible/compat/__init__.py +1 -4
- ansible/compat/importlib_resources.py +1 -2
- ansible/compat/{selectors/__init__.py → selectors.py} +12 -12
- ansible/config/ansible_builtin_runtime.yml +2 -0
- ansible/config/base.yml +154 -149
- ansible/config/manager.py +33 -25
- ansible/constants.py +1 -2
- ansible/context.py +1 -4
- ansible/errors/__init__.py +1 -3
- ansible/errors/yaml_strings.py +1 -3
- ansible/executor/__init__.py +1 -3
- ansible/executor/discovery/python_target.py +1 -2
- ansible/executor/interpreter_discovery.py +9 -8
- ansible/executor/module_common.py +1 -3
- ansible/executor/play_iterator.py +2 -4
- ansible/executor/playbook_executor.py +1 -3
- ansible/executor/powershell/module_manifest.py +2 -3
- ansible/executor/process/__init__.py +1 -3
- ansible/executor/process/worker.py +1 -3
- ansible/executor/stats.py +1 -3
- ansible/executor/task_executor.py +2 -3
- ansible/executor/task_queue_manager.py +1 -3
- ansible/executor/task_result.py +2 -3
- ansible/galaxy/__init__.py +1 -2
- ansible/galaxy/api.py +10 -2
- ansible/galaxy/collection/__init__.py +38 -24
- ansible/galaxy/collection/concrete_artifact_manager.py +1 -2
- ansible/galaxy/collection/galaxy_api_proxy.py +1 -2
- ansible/galaxy/collection/gpg.py +4 -2
- ansible/galaxy/data/apb/meta/main.yml.j2 +0 -15
- ansible/galaxy/data/container/meta/main.yml.j2 +0 -18
- ansible/galaxy/data/default/role/meta/main.yml.j2 +0 -18
- ansible/galaxy/data/network/cliconf_plugins/example.py.j2 +1 -2
- ansible/galaxy/data/network/library/example_command.py.j2 +1 -2
- ansible/galaxy/data/network/library/example_config.py.j2 +1 -2
- ansible/galaxy/data/network/library/example_facts.py.j2 +1 -2
- ansible/galaxy/data/network/meta/main.yml.j2 +0 -15
- ansible/galaxy/data/network/module_utils/example.py.j2 +1 -2
- ansible/galaxy/data/network/netconf_plugins/example.py.j2 +1 -2
- ansible/galaxy/data/network/terminal_plugins/example.py.j2 +1 -2
- ansible/galaxy/dependency_resolution/__init__.py +1 -2
- ansible/galaxy/dependency_resolution/dataclasses.py +5 -6
- ansible/galaxy/dependency_resolution/errors.py +1 -2
- ansible/galaxy/dependency_resolution/providers.py +3 -4
- ansible/galaxy/dependency_resolution/reporters.py +2 -3
- ansible/galaxy/dependency_resolution/resolvers.py +1 -2
- ansible/galaxy/dependency_resolution/versioning.py +1 -2
- ansible/galaxy/role.py +12 -15
- ansible/galaxy/token.py +1 -2
- ansible/galaxy/user_agent.py +1 -2
- ansible/inventory/data.py +1 -2
- ansible/inventory/group.py +1 -2
- ansible/inventory/helpers.py +1 -2
- ansible/inventory/host.py +1 -3
- ansible/inventory/manager.py +1 -2
- ansible/module_utils/_text.py +1 -2
- ansible/module_utils/ansible_release.py +3 -5
- ansible/module_utils/api.py +1 -2
- ansible/module_utils/basic.py +113 -158
- ansible/module_utils/common/_collections_compat.py +1 -2
- ansible/module_utils/common/_utils.py +1 -3
- ansible/module_utils/common/arg_spec.py +1 -2
- ansible/module_utils/common/collections.py +1 -2
- ansible/module_utils/common/dict_transformations.py +1 -2
- ansible/module_utils/common/file.py +10 -5
- ansible/module_utils/common/json.py +1 -3
- ansible/module_utils/common/locale.py +1 -2
- ansible/module_utils/common/network.py +2 -3
- ansible/module_utils/common/parameters.py +9 -9
- ansible/module_utils/common/process.py +12 -5
- ansible/module_utils/common/respawn.py +2 -3
- ansible/module_utils/common/sys_info.py +1 -2
- ansible/module_utils/common/text/converters.py +1 -2
- ansible/module_utils/common/text/formatters.py +1 -2
- ansible/module_utils/common/validation.py +5 -6
- ansible/module_utils/common/warnings.py +1 -2
- ansible/module_utils/common/yaml.py +1 -2
- ansible/module_utils/compat/datetime.py +1 -3
- ansible/module_utils/compat/importlib.py +21 -13
- ansible/module_utils/compat/paramiko.py +1 -2
- ansible/module_utils/compat/selectors.py +10 -34
- ansible/module_utils/compat/selinux.py +1 -2
- ansible/module_utils/compat/typing.py +1 -2
- ansible/module_utils/compat/version.py +1 -2
- ansible/module_utils/connection.py +1 -2
- ansible/module_utils/csharp/Ansible.Basic.cs +20 -3
- ansible/module_utils/distro/__init__.py +3 -4
- ansible/module_utils/distro/_distro.py +230 -234
- ansible/module_utils/errors.py +1 -2
- ansible/module_utils/facts/__init__.py +1 -2
- ansible/module_utils/facts/ansible_collector.py +1 -2
- ansible/module_utils/facts/collector.py +1 -2
- ansible/module_utils/facts/compat.py +1 -2
- ansible/module_utils/facts/default_collectors.py +1 -2
- ansible/module_utils/facts/hardware/aix.py +1 -2
- ansible/module_utils/facts/hardware/base.py +1 -2
- ansible/module_utils/facts/hardware/darwin.py +1 -2
- ansible/module_utils/facts/hardware/dragonfly.py +1 -2
- ansible/module_utils/facts/hardware/freebsd.py +1 -2
- ansible/module_utils/facts/hardware/hpux.py +1 -2
- ansible/module_utils/facts/hardware/hurd.py +1 -2
- ansible/module_utils/facts/hardware/linux.py +8 -6
- ansible/module_utils/facts/hardware/netbsd.py +1 -2
- ansible/module_utils/facts/hardware/openbsd.py +1 -2
- ansible/module_utils/facts/hardware/sunos.py +2 -3
- ansible/module_utils/facts/namespace.py +1 -2
- ansible/module_utils/facts/network/aix.py +1 -2
- ansible/module_utils/facts/network/base.py +1 -2
- ansible/module_utils/facts/network/darwin.py +1 -2
- ansible/module_utils/facts/network/dragonfly.py +1 -2
- ansible/module_utils/facts/network/fc_wwn.py +1 -2
- ansible/module_utils/facts/network/freebsd.py +1 -2
- ansible/module_utils/facts/network/generic_bsd.py +1 -2
- ansible/module_utils/facts/network/hpux.py +1 -2
- ansible/module_utils/facts/network/hurd.py +1 -2
- ansible/module_utils/facts/network/iscsi.py +1 -2
- ansible/module_utils/facts/network/linux.py +1 -2
- ansible/module_utils/facts/network/netbsd.py +1 -2
- ansible/module_utils/facts/network/nvme.py +1 -2
- ansible/module_utils/facts/network/openbsd.py +1 -2
- ansible/module_utils/facts/network/sunos.py +1 -2
- ansible/module_utils/facts/other/facter.py +1 -2
- ansible/module_utils/facts/other/ohai.py +1 -2
- ansible/module_utils/facts/packages.py +1 -2
- ansible/module_utils/facts/sysctl.py +1 -2
- ansible/module_utils/facts/system/apparmor.py +1 -2
- ansible/module_utils/facts/system/caps.py +1 -2
- 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 +1 -2
- ansible/module_utils/facts/system/distribution.py +4 -5
- ansible/module_utils/facts/system/dns.py +1 -2
- ansible/module_utils/facts/system/env.py +1 -2
- ansible/module_utils/facts/system/fips.py +1 -2
- 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 +7 -30
- 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 -2
- ansible/module_utils/facts/system/service_mgr.py +1 -2
- ansible/module_utils/facts/system/ssh_pub_keys.py +1 -2
- ansible/module_utils/facts/system/user.py +1 -2
- ansible/module_utils/facts/timeout.py +1 -2
- ansible/module_utils/facts/utils.py +1 -2
- ansible/module_utils/facts/virtual/base.py +1 -2
- ansible/module_utils/facts/virtual/dragonfly.py +1 -2
- ansible/module_utils/facts/virtual/freebsd.py +1 -2
- ansible/module_utils/facts/virtual/hpux.py +1 -2
- ansible/module_utils/facts/virtual/linux.py +1 -2
- ansible/module_utils/facts/virtual/netbsd.py +1 -2
- ansible/module_utils/facts/virtual/openbsd.py +1 -2
- ansible/module_utils/facts/virtual/sunos.py +1 -2
- ansible/module_utils/facts/virtual/sysctl.py +1 -2
- ansible/module_utils/json_utils.py +1 -2
- ansible/module_utils/parsing/convert_bool.py +1 -2
- ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 +5 -2
- ansible/module_utils/powershell/Ansible.ModuleUtils.WebRequest.psm1 +1 -1
- ansible/module_utils/pycompat24.py +24 -4
- ansible/module_utils/service.py +31 -5
- ansible/module_utils/six/__init__.py +1 -1
- ansible/module_utils/splitter.py +1 -2
- ansible/module_utils/urls.py +335 -1052
- ansible/module_utils/yumdnf.py +13 -35
- ansible/modules/add_host.py +1 -2
- ansible/modules/apt.py +38 -22
- ansible/modules/apt_key.py +1 -2
- ansible/modules/apt_repository.py +18 -10
- ansible/modules/assemble.py +1 -2
- ansible/modules/assert.py +8 -4
- ansible/modules/async_status.py +17 -14
- ansible/modules/async_wrapper.py +11 -9
- ansible/modules/blockinfile.py +2 -3
- ansible/modules/command.py +1 -2
- ansible/modules/copy.py +4 -76
- ansible/modules/cron.py +3 -3
- ansible/modules/deb822_repository.py +5 -5
- ansible/modules/debconf.py +19 -8
- ansible/modules/debug.py +1 -2
- ansible/modules/dnf.py +59 -186
- ansible/modules/dnf5.py +57 -43
- ansible/modules/dpkg_selections.py +1 -2
- ansible/modules/expect.py +23 -15
- ansible/modules/fail.py +1 -2
- ansible/modules/fetch.py +1 -2
- ansible/modules/file.py +4 -3
- ansible/modules/find.py +18 -5
- ansible/modules/gather_facts.py +1 -2
- ansible/modules/get_url.py +2 -3
- ansible/modules/getent.py +2 -3
- ansible/modules/git.py +28 -17
- ansible/modules/group.py +1 -2
- ansible/modules/group_by.py +1 -2
- ansible/modules/hostname.py +2 -19
- ansible/modules/import_playbook.py +1 -2
- ansible/modules/import_role.py +9 -2
- ansible/modules/import_tasks.py +1 -2
- ansible/modules/include_role.py +1 -2
- ansible/modules/include_tasks.py +1 -2
- ansible/modules/include_vars.py +1 -2
- ansible/modules/iptables.py +38 -21
- ansible/modules/known_hosts.py +15 -8
- ansible/modules/lineinfile.py +1 -6
- ansible/modules/meta.py +3 -2
- ansible/modules/package.py +6 -5
- ansible/modules/package_facts.py +1 -2
- ansible/modules/pause.py +2 -3
- ansible/modules/ping.py +1 -2
- ansible/modules/pip.py +40 -20
- ansible/modules/raw.py +1 -2
- ansible/modules/reboot.py +1 -2
- ansible/modules/replace.py +7 -5
- ansible/modules/rpm_key.py +1 -2
- ansible/modules/script.py +1 -2
- ansible/modules/service.py +3 -21
- ansible/modules/service_facts.py +3 -12
- ansible/modules/set_fact.py +1 -2
- ansible/modules/set_stats.py +1 -2
- ansible/modules/setup.py +1 -2
- ansible/modules/shell.py +1 -2
- ansible/modules/slurp.py +1 -2
- ansible/modules/stat.py +1 -2
- ansible/modules/subversion.py +2 -3
- ansible/modules/systemd.py +12 -9
- ansible/modules/systemd_service.py +12 -9
- ansible/modules/sysvinit.py +7 -2
- ansible/modules/tempfile.py +7 -2
- ansible/modules/template.py +2 -3
- ansible/modules/unarchive.py +13 -3
- ansible/modules/uri.py +5 -8
- ansible/modules/user.py +11 -10
- ansible/modules/validate_argument_spec.py +15 -16
- ansible/modules/wait_for.py +1 -2
- ansible/modules/wait_for_connection.py +1 -2
- ansible/modules/yum_repository.py +2 -3
- ansible/parsing/__init__.py +1 -3
- ansible/parsing/ajson.py +1 -3
- ansible/parsing/dataloader.py +23 -12
- ansible/parsing/mod_args.py +14 -8
- ansible/parsing/plugin_docs.py +1 -2
- ansible/parsing/quoting.py +1 -3
- ansible/parsing/splitter.py +1 -3
- ansible/parsing/utils/__init__.py +1 -3
- ansible/parsing/utils/addresses.py +1 -3
- ansible/parsing/utils/jsonify.py +1 -3
- ansible/parsing/utils/yaml.py +1 -3
- ansible/parsing/vault/__init__.py +6 -8
- ansible/parsing/yaml/__init__.py +1 -3
- ansible/parsing/yaml/constructor.py +1 -3
- ansible/parsing/yaml/dumper.py +1 -3
- ansible/parsing/yaml/loader.py +1 -3
- ansible/parsing/yaml/objects.py +1 -3
- ansible/playbook/__init__.py +1 -3
- ansible/playbook/attribute.py +1 -3
- ansible/playbook/base.py +2 -3
- ansible/playbook/block.py +1 -3
- ansible/playbook/collectionsearch.py +1 -2
- ansible/playbook/conditional.py +1 -3
- ansible/playbook/delegatable.py +1 -0
- ansible/playbook/handler.py +2 -4
- ansible/playbook/handler_task_include.py +1 -3
- ansible/playbook/helpers.py +1 -4
- ansible/playbook/included_file.py +4 -4
- ansible/playbook/loop_control.py +1 -3
- ansible/playbook/notifiable.py +1 -0
- ansible/playbook/play.py +1 -3
- ansible/playbook/play_context.py +1 -3
- ansible/playbook/playbook_include.py +1 -3
- ansible/playbook/role/__init__.py +1 -3
- ansible/playbook/role/definition.py +1 -3
- ansible/playbook/role/include.py +1 -3
- ansible/playbook/role/metadata.py +1 -3
- ansible/playbook/role/requirement.py +1 -3
- ansible/playbook/role_include.py +2 -10
- ansible/playbook/taggable.py +1 -3
- ansible/playbook/task.py +2 -4
- ansible/playbook/task_include.py +1 -3
- ansible/plugins/__init__.py +4 -5
- ansible/plugins/action/__init__.py +20 -14
- ansible/plugins/action/add_host.py +2 -4
- ansible/plugins/action/assemble.py +2 -3
- ansible/plugins/action/assert.py +1 -2
- ansible/plugins/action/async_status.py +1 -2
- ansible/plugins/action/command.py +1 -2
- ansible/plugins/action/copy.py +12 -9
- ansible/plugins/action/debug.py +1 -2
- ansible/plugins/action/dnf.py +4 -4
- ansible/plugins/action/fail.py +1 -2
- ansible/plugins/action/fetch.py +2 -3
- ansible/plugins/action/gather_facts.py +3 -4
- ansible/plugins/action/group_by.py +1 -2
- ansible/plugins/action/include_vars.py +1 -2
- ansible/plugins/action/normal.py +1 -2
- ansible/plugins/action/package.py +36 -21
- ansible/plugins/action/pause.py +1 -2
- ansible/plugins/action/raw.py +2 -3
- ansible/plugins/action/reboot.py +30 -15
- ansible/plugins/action/script.py +3 -4
- ansible/plugins/action/service.py +1 -2
- ansible/plugins/action/set_fact.py +1 -2
- ansible/plugins/action/set_stats.py +1 -2
- ansible/plugins/action/shell.py +1 -2
- ansible/plugins/action/template.py +1 -2
- ansible/plugins/action/unarchive.py +1 -2
- ansible/plugins/action/uri.py +2 -3
- ansible/plugins/action/validate_argument_spec.py +1 -2
- ansible/plugins/action/wait_for_connection.py +2 -3
- ansible/plugins/become/__init__.py +1 -2
- ansible/plugins/become/runas.py +1 -2
- ansible/plugins/become/su.py +1 -2
- ansible/plugins/become/sudo.py +1 -2
- ansible/plugins/cache/__init__.py +3 -3
- ansible/plugins/cache/base.py +1 -2
- ansible/plugins/cache/jsonfile.py +1 -3
- ansible/plugins/cache/memory.py +1 -2
- ansible/plugins/callback/__init__.py +2 -4
- ansible/plugins/callback/default.py +2 -3
- ansible/plugins/callback/junit.py +1 -2
- ansible/plugins/callback/minimal.py +1 -3
- ansible/plugins/callback/oneline.py +1 -3
- ansible/plugins/callback/tree.py +1 -2
- ansible/plugins/cliconf/__init__.py +1 -2
- ansible/plugins/connection/__init__.py +4 -5
- ansible/plugins/connection/local.py +3 -4
- ansible/plugins/connection/paramiko_ssh.py +1 -2
- ansible/plugins/connection/psrp.py +1 -2
- ansible/plugins/connection/ssh.py +18 -54
- ansible/plugins/connection/winrm.py +3 -4
- ansible/plugins/doc_fragments/action_common_attributes.py +2 -3
- ansible/plugins/doc_fragments/action_core.py +3 -4
- ansible/plugins/doc_fragments/backup.py +1 -2
- ansible/plugins/doc_fragments/connection_pipelining.py +1 -2
- ansible/plugins/doc_fragments/constructed.py +1 -2
- ansible/plugins/doc_fragments/decrypt.py +2 -3
- ansible/plugins/doc_fragments/default_callback.py +1 -2
- ansible/plugins/doc_fragments/files.py +1 -2
- ansible/plugins/doc_fragments/inventory_cache.py +1 -2
- ansible/plugins/doc_fragments/result_format_callback.py +1 -2
- ansible/plugins/doc_fragments/return_common.py +1 -2
- ansible/plugins/doc_fragments/shell_common.py +1 -2
- ansible/plugins/doc_fragments/shell_windows.py +1 -2
- ansible/plugins/doc_fragments/template_common.py +1 -2
- ansible/plugins/doc_fragments/url.py +1 -2
- ansible/plugins/doc_fragments/url_windows.py +1 -2
- ansible/plugins/doc_fragments/validate.py +1 -2
- ansible/plugins/doc_fragments/vars_plugin_staging.py +1 -2
- ansible/plugins/filter/__init__.py +1 -2
- ansible/plugins/filter/b64decode.yml +8 -8
- ansible/plugins/filter/b64encode.yml +4 -4
- ansible/plugins/filter/comment.yml +1 -1
- ansible/plugins/filter/core.py +11 -9
- ansible/plugins/filter/encryption.py +1 -3
- ansible/plugins/filter/extract.yml +1 -1
- ansible/plugins/filter/from_yaml_all.yml +1 -1
- ansible/plugins/filter/human_readable.yml +3 -3
- ansible/plugins/filter/human_to_bytes.yml +2 -2
- ansible/plugins/filter/mandatory.yml +1 -1
- ansible/plugins/filter/mathstuff.py +2 -2
- ansible/plugins/filter/password_hash.yml +3 -2
- ansible/plugins/filter/regex_replace.yml +15 -0
- ansible/plugins/filter/regex_search.yml +12 -0
- ansible/plugins/filter/strftime.yml +2 -9
- ansible/plugins/filter/to_datetime.yml +17 -2
- ansible/plugins/filter/to_nice_json.yml +4 -0
- ansible/plugins/filter/union.yml +1 -1
- ansible/plugins/filter/urls.py +1 -2
- ansible/plugins/filter/urlsplit.py +1 -2
- ansible/plugins/filter/zip.yml +2 -2
- ansible/plugins/filter/zip_longest.yml +1 -1
- ansible/plugins/httpapi/__init__.py +1 -2
- ansible/plugins/inventory/__init__.py +2 -4
- ansible/plugins/inventory/advanced_host_list.py +1 -2
- ansible/plugins/inventory/auto.py +2 -3
- ansible/plugins/inventory/constructed.py +3 -2
- ansible/plugins/inventory/generator.py +1 -2
- ansible/plugins/inventory/host_list.py +1 -2
- ansible/plugins/inventory/ini.py +1 -2
- ansible/plugins/inventory/script.py +122 -3
- ansible/plugins/inventory/toml.py +1 -2
- ansible/plugins/inventory/yaml.py +3 -4
- ansible/plugins/list.py +2 -3
- ansible/plugins/loader.py +10 -11
- ansible/plugins/lookup/__init__.py +1 -3
- ansible/plugins/lookup/config.py +19 -15
- ansible/plugins/lookup/csvfile.py +16 -7
- ansible/plugins/lookup/dict.py +2 -3
- ansible/plugins/lookup/env.py +4 -4
- ansible/plugins/lookup/file.py +1 -2
- ansible/plugins/lookup/fileglob.py +1 -2
- ansible/plugins/lookup/first_found.py +8 -7
- ansible/plugins/lookup/indexed_items.py +1 -2
- ansible/plugins/lookup/ini.py +6 -3
- ansible/plugins/lookup/inventory_hostnames.py +1 -2
- ansible/plugins/lookup/items.py +1 -2
- ansible/plugins/lookup/lines.py +1 -2
- ansible/plugins/lookup/list.py +1 -3
- ansible/plugins/lookup/nested.py +1 -2
- ansible/plugins/lookup/password.py +16 -14
- ansible/plugins/lookup/pipe.py +1 -2
- ansible/plugins/lookup/random_choice.py +1 -2
- ansible/plugins/lookup/sequence.py +21 -52
- ansible/plugins/lookup/subelements.py +1 -2
- ansible/plugins/lookup/template.py +1 -2
- ansible/plugins/lookup/together.py +1 -2
- ansible/plugins/lookup/unvault.py +1 -2
- ansible/plugins/lookup/url.py +9 -3
- ansible/plugins/lookup/varnames.py +1 -2
- ansible/plugins/lookup/vars.py +1 -2
- ansible/plugins/netconf/__init__.py +1 -2
- ansible/plugins/shell/__init__.py +3 -4
- ansible/plugins/shell/cmd.py +1 -2
- ansible/plugins/shell/powershell.py +1 -2
- ansible/plugins/shell/sh.py +1 -2
- ansible/plugins/strategy/__init__.py +33 -21
- ansible/plugins/strategy/debug.py +1 -2
- ansible/plugins/strategy/free.py +17 -7
- ansible/plugins/strategy/host_pinned.py +1 -3
- ansible/plugins/strategy/linear.py +22 -22
- ansible/plugins/terminal/__init__.py +2 -3
- ansible/plugins/test/__init__.py +1 -2
- ansible/plugins/test/change.yml +1 -1
- ansible/plugins/test/changed.yml +1 -1
- ansible/plugins/test/contains.yml +1 -1
- ansible/plugins/test/core.py +2 -4
- ansible/plugins/test/exists.yml +1 -1
- ansible/plugins/test/failed.yml +1 -1
- ansible/plugins/test/failure.yml +1 -1
- ansible/plugins/test/files.py +1 -3
- ansible/plugins/test/finished.yml +3 -3
- ansible/plugins/test/issuperset.yml +1 -1
- ansible/plugins/test/match.yml +1 -1
- ansible/plugins/test/mathstuff.py +1 -2
- ansible/plugins/test/reachable.yml +1 -1
- ansible/plugins/test/regex.yml +1 -1
- ansible/plugins/test/search.yml +1 -1
- ansible/plugins/test/skip.yml +1 -1
- ansible/plugins/test/skipped.yml +1 -1
- ansible/plugins/test/started.yml +1 -1
- ansible/plugins/test/succeeded.yml +1 -1
- ansible/plugins/test/success.yml +1 -1
- ansible/plugins/test/successful.yml +1 -1
- ansible/plugins/test/superset.yml +1 -1
- ansible/plugins/test/unreachable.yml +1 -1
- ansible/plugins/test/uri.py +1 -3
- ansible/plugins/vars/__init__.py +1 -2
- ansible/plugins/vars/host_group_vars.py +2 -3
- ansible/release.py +3 -5
- ansible/template/__init__.py +24 -37
- ansible/template/native_helpers.py +1 -3
- ansible/template/template.py +1 -3
- ansible/template/vars.py +1 -0
- ansible/utils/__init__.py +1 -3
- ansible/utils/cmd_functions.py +1 -2
- ansible/utils/collection_loader/__init__.py +1 -2
- ansible/utils/collection_loader/_collection_config.py +1 -2
- ansible/utils/collection_loader/_collection_finder.py +1 -2
- ansible/utils/collection_loader/_collection_meta.py +1 -2
- ansible/utils/color.py +1 -2
- ansible/utils/context_objects.py +1 -4
- ansible/utils/display.py +88 -30
- ansible/utils/encrypt.py +4 -105
- ansible/utils/fqcn.py +1 -2
- ansible/utils/galaxy.py +1 -3
- ansible/utils/hashing.py +1 -3
- ansible/utils/helpers.py +1 -3
- ansible/utils/jsonrpc.py +1 -2
- ansible/utils/listify.py +1 -3
- ansible/utils/lock.py +1 -3
- ansible/utils/multiprocessing.py +1 -3
- ansible/utils/native_jinja.py +1 -3
- ansible/utils/path.py +1 -2
- ansible/utils/plugin_docs.py +7 -6
- ansible/utils/py3compat.py +17 -55
- ansible/utils/sentinel.py +1 -3
- ansible/utils/shlex.py +1 -3
- ansible/utils/singleton.py +1 -3
- ansible/utils/ssh_functions.py +1 -3
- ansible/utils/unicode.py +1 -3
- ansible/utils/unsafe_proxy.py +1 -2
- ansible/utils/vars.py +6 -8
- ansible/utils/version.py +1 -3
- ansible/vars/clean.py +1 -3
- ansible/vars/fact_cache.py +1 -2
- ansible/vars/hostvars.py +3 -7
- ansible/vars/manager.py +24 -6
- ansible/vars/reserved.py +1 -3
- {ansible_core-2.16.6.data → ansible_core-2.17.0rc1.data}/scripts/ansible-test +1 -2
- {ansible_core-2.16.6.dist-info → ansible_core-2.17.0rc1.dist-info}/METADATA +3 -3
- ansible_core-2.17.0rc1.dist-info/RECORD +987 -0
- ansible_test/__init__.py +1 -2
- ansible_test/_data/completion/docker.txt +7 -9
- ansible_test/_data/completion/remote.txt +6 -7
- ansible_test/_data/requirements/ansible-test.txt +0 -2
- ansible_test/_data/requirements/constraints.txt +1 -6
- ansible_test/_data/requirements/sanity.ansible-doc.txt +3 -3
- ansible_test/_data/requirements/sanity.changelog.txt +3 -3
- ansible_test/_data/requirements/sanity.import.plugin.txt +2 -2
- ansible_test/_data/requirements/sanity.mypy.txt +12 -12
- ansible_test/_data/requirements/sanity.pep8.txt +1 -1
- ansible_test/_data/requirements/sanity.pylint.txt +7 -7
- ansible_test/_data/requirements/sanity.runtime-metadata.txt +1 -1
- ansible_test/_data/requirements/sanity.validate-modules.txt +3 -3
- ansible_test/_data/requirements/sanity.yamllint.txt +2 -2
- ansible_test/_internal/bootstrap.py +2 -2
- ansible_test/_internal/classification/__init__.py +0 -5
- ansible_test/_internal/commands/integration/cloud/cs.py +1 -1
- ansible_test/_internal/commands/integration/cloud/nios.py +1 -1
- ansible_test/_internal/commands/sanity/__init__.py +1 -27
- ansible_test/_internal/commands/sanity/import.py +0 -18
- ansible_test/_internal/commands/sanity/mypy.py +7 -10
- ansible_test/_internal/commands/units/__init__.py +1 -1
- ansible_test/_internal/config.py +0 -1
- ansible_test/_internal/content_config.py +0 -5
- ansible_test/_internal/coverage_util.py +0 -1
- ansible_test/_internal/docker_util.py +1 -1
- ansible_test/_internal/host_profiles.py +5 -4
- ansible_test/_internal/python_requirements.py +1 -119
- ansible_test/_internal/ssh.py +1 -0
- ansible_test/_internal/util.py +1 -1
- ansible_test/_internal/util_common.py +1 -1
- ansible_test/_internal/venv.py +10 -108
- ansible_test/_util/__init__.py +1 -2
- ansible_test/_util/controller/sanity/mypy/ansible-core.ini +0 -6
- ansible_test/_util/controller/sanity/mypy/modules.ini +0 -6
- ansible_test/_util/controller/sanity/pylint/config/ansible-test-target.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/config/ansible-test.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/config/code-smell.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/config/collection.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/config/default.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py +1 -2
- ansible_test/_util/controller/sanity/shellcheck/exclude.txt +0 -1
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py +31 -59
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py +0 -7
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py +10 -2
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/utils.py +1 -1
- ansible_test/_util/controller/sanity/yamllint/yamllinter.py +16 -4
- ansible_test/_util/target/__init__.py +1 -2
- ansible_test/_util/target/cli/ansible_test_cli_stub.py +1 -2
- ansible_test/_util/target/common/constants.py +1 -4
- ansible_test/_util/target/injector/python.py +4 -19
- ansible_test/_util/target/pytest/plugins/ansible_forked.py +2 -9
- ansible_test/_util/target/pytest/plugins/ansible_pytest_collections.py +1 -5
- ansible_test/_util/target/pytest/plugins/ansible_pytest_coverage.py +1 -2
- ansible_test/_util/target/sanity/compile/compile.py +3 -12
- ansible_test/_util/target/sanity/import/importer.py +1 -12
- ansible_test/_util/target/setup/bootstrap.sh +49 -105
- ansible_test/_util/target/setup/probe_cgroups.py +1 -2
- ansible_test/_util/target/setup/quiet_pip.py +1 -16
- ansible_test/_util/target/setup/requirements.py +9 -2
- ansible_test/_util/target/tools/virtualenvcheck.py +1 -2
- ansible_test/_util/target/tools/yamlcheck.py +1 -2
- ansible/module_utils/common/_json_compat.py +0 -16
- ansible/module_utils/compat/_selectors2.py +0 -655
- ansible/modules/yum.py +0 -1821
- ansible/plugins/action/yum.py +0 -111
- ansible_core-2.16.6.dist-info/RECORD +0 -1009
- ansible_test/_util/controller/sanity/code-smell/future-import-boilerplate.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/future-import-boilerplate.py +0 -46
- ansible_test/_util/controller/sanity/code-smell/metaclass-boilerplate.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/metaclass-boilerplate.py +0 -44
- ansible_test/_util/controller/sanity/code-smell/no-basestring.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-basestring.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-dict-iteritems.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-dict-iteritems.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-dict-iterkeys.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-dict-iterkeys.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-dict-itervalues.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-dict-itervalues.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-main-display.json +0 -10
- ansible_test/_util/controller/sanity/code-smell/no-main-display.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-unicode-literals.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-unicode-literals.py +0 -21
- ansible_test/_util/controller/tools/sslcheck.py +0 -22
- ansible_test/_util/target/common/__init__.py +0 -2
- {ansible_core-2.16.6.dist-info → ansible_core-2.17.0rc1.dist-info}/COPYING +0 -0
- {ansible_core-2.16.6.dist-info → ansible_core-2.17.0rc1.dist-info}/WHEEL +0 -0
- {ansible_core-2.16.6.dist-info → ansible_core-2.17.0rc1.dist-info}/entry_points.txt +0 -0
- {ansible_core-2.16.6.dist-info → ansible_core-2.17.0rc1.dist-info}/top_level.txt +0 -0
ansible/plugins/action/shell.py
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Copyright: (c) 2017, Ansible Project
|
|
2
2
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
3
3
|
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
from ansible.errors import AnsibleActionFail
|
|
8
7
|
from ansible.plugins.action import ActionBase
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# Copyright: (c) 2018, Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
import os
|
|
9
8
|
import shutil
|
|
@@ -15,8 +15,7 @@
|
|
|
15
15
|
#
|
|
16
16
|
# You should have received a copy of the GNU General Public License
|
|
17
17
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
from __future__ import
|
|
19
|
-
__metaclass__ = type
|
|
18
|
+
from __future__ import annotations
|
|
20
19
|
|
|
21
20
|
import os
|
|
22
21
|
|
ansible/plugins/action/uri.py
CHANGED
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
# (c) 2018, Matt Martz <matt@sivel.net>
|
|
4
4
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
from __future__ import (absolute_import, division, print_function)
|
|
8
|
-
__metaclass__ = type
|
|
6
|
+
from __future__ import annotations
|
|
9
7
|
|
|
10
8
|
import os
|
|
11
9
|
|
|
@@ -22,6 +20,7 @@ class ActionModule(ActionBase):
|
|
|
22
20
|
|
|
23
21
|
def run(self, tmp=None, task_vars=None):
|
|
24
22
|
self._supports_async = True
|
|
23
|
+
self._supports_check_mode = False
|
|
25
24
|
|
|
26
25
|
if task_vars is None:
|
|
27
26
|
task_vars = dict()
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Copyright 2021 Red Hat
|
|
2
2
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
3
3
|
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
from ansible.errors import AnsibleError
|
|
8
7
|
from ansible.plugins.action import ActionBase
|
|
@@ -16,8 +16,7 @@
|
|
|
16
16
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
|
|
18
18
|
# CI-required python3 boilerplate
|
|
19
|
-
from __future__ import
|
|
20
|
-
__metaclass__ = type
|
|
19
|
+
from __future__ import annotations
|
|
21
20
|
|
|
22
21
|
import time
|
|
23
22
|
from datetime import datetime, timedelta, timezone
|
|
@@ -69,7 +68,7 @@ class ActionModule(ActionBase):
|
|
|
69
68
|
sleep = int(self._task.args.get('sleep', self.DEFAULT_SLEEP))
|
|
70
69
|
timeout = int(self._task.args.get('timeout', self.DEFAULT_TIMEOUT))
|
|
71
70
|
|
|
72
|
-
if self.
|
|
71
|
+
if self._task.check_mode:
|
|
73
72
|
display.vvv("wait_for_connection: skipping for check_mode")
|
|
74
73
|
return dict(skipped=True)
|
|
75
74
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# Copyright: (c) 2018, Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
import shlex
|
|
8
7
|
|
ansible/plugins/become/runas.py
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# Copyright: (c) 2018, Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
DOCUMENTATION = """
|
|
8
7
|
name: runas
|
ansible/plugins/become/su.py
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# Copyright: (c) 2018, Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
DOCUMENTATION = """
|
|
8
7
|
name: su
|
ansible/plugins/become/sudo.py
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# Copyright: (c) 2018, Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
DOCUMENTATION = """
|
|
8
7
|
name: sudo
|
|
@@ -15,8 +15,7 @@
|
|
|
15
15
|
#
|
|
16
16
|
# You should have received a copy of the GNU General Public License
|
|
17
17
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
from __future__ import
|
|
19
|
-
__metaclass__ = type
|
|
18
|
+
from __future__ import annotations
|
|
20
19
|
|
|
21
20
|
import copy
|
|
22
21
|
import errno
|
|
@@ -29,6 +28,7 @@ from collections.abc import MutableMapping
|
|
|
29
28
|
|
|
30
29
|
from ansible import constants as C
|
|
31
30
|
from ansible.errors import AnsibleError
|
|
31
|
+
from ansible.module_utils.common.file import S_IRWU_RG_RO
|
|
32
32
|
from ansible.module_utils.common.text.converters import to_bytes, to_text
|
|
33
33
|
from ansible.plugins import AnsiblePlugin
|
|
34
34
|
from ansible.plugins.loader import cache_loader
|
|
@@ -165,7 +165,7 @@ class BaseFileCacheModule(BaseCacheModule):
|
|
|
165
165
|
display.warning("error in '%s' cache plugin while trying to write to '%s' : %s" % (self.plugin_name, tmpfile_path, to_bytes(e)))
|
|
166
166
|
try:
|
|
167
167
|
os.rename(tmpfile_path, cachefile)
|
|
168
|
-
os.chmod(cachefile, mode=
|
|
168
|
+
os.chmod(cachefile, mode=S_IRWU_RG_RO)
|
|
169
169
|
except (OSError, IOError) as e:
|
|
170
170
|
display.warning("error in '%s' cache plugin while trying to move '%s' to '%s' : %s" % (self.plugin_name, tmpfile_path, cachefile, to_bytes(e)))
|
|
171
171
|
finally:
|
ansible/plugins/cache/base.py
CHANGED
|
@@ -14,8 +14,7 @@
|
|
|
14
14
|
#
|
|
15
15
|
# You should have received a copy of the GNU General Public License
|
|
16
16
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
from __future__ import
|
|
18
|
-
__metaclass__ = type
|
|
17
|
+
from __future__ import annotations
|
|
19
18
|
|
|
20
19
|
# moved actual classes to __init__ kept here for backward compat with 3rd parties
|
|
21
20
|
from ansible.plugins.cache import BaseCacheModule, BaseFileCacheModule # pylint: disable=unused-import
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
# (c) 2017 Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
from __future__ import (absolute_import, division, print_function)
|
|
7
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
8
6
|
|
|
9
7
|
DOCUMENTATION = '''
|
|
10
8
|
name: jsonfile
|
ansible/plugins/cache/memory.py
CHANGED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
from __future__ import
|
|
7
|
-
__metaclass__ = type
|
|
6
|
+
from __future__ import annotations
|
|
8
7
|
|
|
9
8
|
DOCUMENTATION = '''
|
|
10
9
|
name: memory
|
|
@@ -15,9 +15,7 @@
|
|
|
15
15
|
# You should have received a copy of the GNU General Public License
|
|
16
16
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
from __future__ import (absolute_import, division, print_function)
|
|
20
|
-
__metaclass__ = type
|
|
18
|
+
from __future__ import annotations
|
|
21
19
|
|
|
22
20
|
import difflib
|
|
23
21
|
import json
|
|
@@ -169,7 +167,7 @@ class CallbackBase(AnsiblePlugin):
|
|
|
169
167
|
_copy_result = deepcopy
|
|
170
168
|
|
|
171
169
|
def set_option(self, k, v):
|
|
172
|
-
self._plugin_options[k] = v
|
|
170
|
+
self._plugin_options[k] = C.config.get_config_value(k, plugin_type=self.plugin_type, plugin_name=self._load_name, direct={k: v})
|
|
173
171
|
|
|
174
172
|
def get_option(self, k):
|
|
175
173
|
return self._plugin_options[k]
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# (c) 2017 Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
DOCUMENTATION = '''
|
|
9
8
|
name: default
|
|
@@ -166,7 +165,7 @@ class CallbackModule(CallbackBase):
|
|
|
166
165
|
# args can be specified as no_log in several places: in the task or in
|
|
167
166
|
# the argument spec. We can check whether the task is no_log but the
|
|
168
167
|
# argument spec can't be because that is only run on the target
|
|
169
|
-
# machine and we haven't run it
|
|
168
|
+
# machine and we haven't run it there yet at this time.
|
|
170
169
|
#
|
|
171
170
|
# So we give people a config option to affect display of the args so
|
|
172
171
|
# that they can secure this if they feel that their stdout is insecure
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# (c) 2017 Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
DOCUMENTATION = '''
|
|
9
8
|
name: junit
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
# (c) 2017 Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
from __future__ import (absolute_import, division, print_function)
|
|
7
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
8
6
|
|
|
9
7
|
DOCUMENTATION = '''
|
|
10
8
|
name: minimal
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
# (c) 2017 Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
from __future__ import (absolute_import, division, print_function)
|
|
7
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
8
6
|
|
|
9
7
|
DOCUMENTATION = '''
|
|
10
8
|
name: oneline
|
ansible/plugins/callback/tree.py
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# (c) 2017 Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
DOCUMENTATION = '''
|
|
9
8
|
name: tree
|
|
@@ -16,8 +16,7 @@
|
|
|
16
16
|
# You should have received a copy of the GNU General Public License
|
|
17
17
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
18
18
|
#
|
|
19
|
-
from __future__ import
|
|
20
|
-
__metaclass__ = type
|
|
19
|
+
from __future__ import annotations
|
|
21
20
|
|
|
22
21
|
from abc import abstractmethod
|
|
23
22
|
from functools import wraps
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# (c) 2015 Toshio Kuratomi <tkuratomi@ansible.com>
|
|
3
3
|
# (c) 2017, Peter Sprygada <psprygad@redhat.com>
|
|
4
4
|
# (c) 2017 Ansible Project
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
import collections.abc as c
|
|
9
8
|
import fcntl
|
|
@@ -267,19 +266,19 @@ class ConnectionBase(AnsiblePlugin):
|
|
|
267
266
|
# its my cousin ...
|
|
268
267
|
value = self._shell._load_name
|
|
269
268
|
else:
|
|
270
|
-
# deal with generic options if the plugin supports em (for
|
|
269
|
+
# deal with generic options if the plugin supports em (for example not all connections have a remote user)
|
|
271
270
|
options = C.config.get_plugin_options_from_var('connection', self._load_name, varname)
|
|
272
271
|
if options:
|
|
273
272
|
value = self.get_option(options[0]) # for these variables there should be only one option
|
|
274
273
|
elif 'become' not in varname:
|
|
275
|
-
# fallback to play_context,
|
|
274
|
+
# fallback to play_context, unless become related TODO: in the end, should come from task/play and not pc
|
|
276
275
|
for prop, var_list in C.MAGIC_VARIABLE_MAPPING.items():
|
|
277
276
|
if varname in var_list:
|
|
278
277
|
try:
|
|
279
278
|
value = getattr(self._play_context, prop)
|
|
280
279
|
break
|
|
281
280
|
except AttributeError:
|
|
282
|
-
#
|
|
281
|
+
# It was not defined; fine to ignore
|
|
283
282
|
continue
|
|
284
283
|
|
|
285
284
|
if value is not None:
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# (c) 2015, 2017 Toshio Kuratomi <tkuratomi@ansible.com>
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
DOCUMENTATION = '''
|
|
9
8
|
name: local
|
|
@@ -22,13 +21,13 @@ import fcntl
|
|
|
22
21
|
import getpass
|
|
23
22
|
import os
|
|
24
23
|
import pty
|
|
24
|
+
import selectors
|
|
25
25
|
import shutil
|
|
26
26
|
import subprocess
|
|
27
27
|
import typing as t
|
|
28
28
|
|
|
29
29
|
import ansible.constants as C
|
|
30
30
|
from ansible.errors import AnsibleError, AnsibleFileNotFound
|
|
31
|
-
from ansible.module_utils.compat import selectors
|
|
32
31
|
from ansible.module_utils.six import text_type, binary_type
|
|
33
32
|
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
|
|
34
33
|
from ansible.plugins.connection import ConnectionBase
|
|
@@ -90,7 +89,7 @@ class Connection(ConnectionBase):
|
|
|
90
89
|
master = None
|
|
91
90
|
stdin = subprocess.PIPE
|
|
92
91
|
if sudoable and self.become and self.become.expect_prompt() and not self.get_option('pipelining'):
|
|
93
|
-
# Create a pty if sudoable for
|
|
92
|
+
# Create a pty if sudoable for privilege escalation that needs it.
|
|
94
93
|
# Falls back to using a standard pipe if this fails, which may
|
|
95
94
|
# cause the command to fail in certain situations where we are escalating
|
|
96
95
|
# privileges or the command otherwise needs a pty.
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
|
|
2
2
|
# (c) 2017 Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
DOCUMENTATION = """
|
|
8
7
|
author: Ansible Core Team
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Copyright (c) 2018 Ansible Project
|
|
2
2
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
3
3
|
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
DOCUMENTATION = """
|
|
8
7
|
author: Ansible Core Team
|
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
# Copyright (c) 2017 Ansible Project
|
|
5
5
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
6
6
|
|
|
7
|
-
from __future__ import
|
|
8
|
-
__metaclass__ = type
|
|
7
|
+
from __future__ import annotations
|
|
9
8
|
|
|
10
9
|
DOCUMENTATION = '''
|
|
11
10
|
name: ssh
|
|
@@ -20,6 +19,8 @@ DOCUMENTATION = '''
|
|
|
20
19
|
- connection_pipelining
|
|
21
20
|
version_added: historical
|
|
22
21
|
notes:
|
|
22
|
+
- This plugin is mostly a wrapper to the ``ssh`` CLI utility and the exact behavior of the options depends on this tool.
|
|
23
|
+
This means that the documentation provided here is subject to be overridden by the CLI tool itself.
|
|
23
24
|
- Many options default to V(None) here but that only means we do not override the SSH tool's defaults and/or configuration.
|
|
24
25
|
For example, if you specify the port in this plugin it will override any C(Port) entry in your C(.ssh/config).
|
|
25
26
|
- The ssh CLI tool uses return code 255 as a 'connection error', this can conflict with commands/tools that
|
|
@@ -36,7 +37,7 @@ DOCUMENTATION = '''
|
|
|
36
37
|
- name: delegated_vars['ansible_host']
|
|
37
38
|
- name: delegated_vars['ansible_ssh_host']
|
|
38
39
|
host_key_checking:
|
|
39
|
-
description: Determines if SSH should
|
|
40
|
+
description: Determines if SSH should reject or not a connection after checking host keys.
|
|
40
41
|
default: True
|
|
41
42
|
type: boolean
|
|
42
43
|
ini:
|
|
@@ -304,12 +305,13 @@ DOCUMENTATION = '''
|
|
|
304
305
|
- name: ansible_sftp_batch_mode
|
|
305
306
|
version_added: '2.7'
|
|
306
307
|
ssh_transfer_method:
|
|
307
|
-
description:
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
308
|
+
description: Preferred method to use when transferring files over ssh
|
|
309
|
+
choices:
|
|
310
|
+
sftp: This is the most reliable way to copy things with SSH.
|
|
311
|
+
scp: Deprecated in OpenSSH. For OpenSSH >=9.0 you must add an additional option to enable scp C(scp_extra_args="-O").
|
|
312
|
+
piped: Creates an SSH pipe with C(dd) on either side to copy the data.
|
|
313
|
+
smart: Tries each method in order (sftp > scp > piped), until one succeeds or they all fail.
|
|
314
|
+
default: smart
|
|
313
315
|
type: string
|
|
314
316
|
env: [{name: ANSIBLE_SSH_TRANSFER_METHOD}]
|
|
315
317
|
ini:
|
|
@@ -317,24 +319,6 @@ DOCUMENTATION = '''
|
|
|
317
319
|
vars:
|
|
318
320
|
- name: ansible_ssh_transfer_method
|
|
319
321
|
version_added: '2.12'
|
|
320
|
-
scp_if_ssh:
|
|
321
|
-
deprecated:
|
|
322
|
-
why: In favor of the O(ssh_transfer_method) option.
|
|
323
|
-
version: "2.17"
|
|
324
|
-
alternatives: O(ssh_transfer_method)
|
|
325
|
-
default: smart
|
|
326
|
-
description:
|
|
327
|
-
- "Preferred method to use when transferring files over SSH."
|
|
328
|
-
- When set to V(smart), Ansible will try them until one succeeds or they all fail.
|
|
329
|
-
- If set to V(True), it will force 'scp', if V(False) it will use 'sftp'.
|
|
330
|
-
- For OpenSSH >=9.0 you must add an additional option to enable scp (C(scp_extra_args="-O"))
|
|
331
|
-
- This setting will overridden by O(ssh_transfer_method) if set.
|
|
332
|
-
env: [{name: ANSIBLE_SCP_IF_SSH}]
|
|
333
|
-
ini:
|
|
334
|
-
- {key: scp_if_ssh, section: ssh_connection}
|
|
335
|
-
vars:
|
|
336
|
-
- name: ansible_scp_if_ssh
|
|
337
|
-
version_added: '2.7'
|
|
338
322
|
use_tty:
|
|
339
323
|
version_added: '2.5'
|
|
340
324
|
default: true
|
|
@@ -389,6 +373,7 @@ import io
|
|
|
389
373
|
import os
|
|
390
374
|
import pty
|
|
391
375
|
import re
|
|
376
|
+
import selectors
|
|
392
377
|
import shlex
|
|
393
378
|
import subprocess
|
|
394
379
|
import time
|
|
@@ -401,11 +386,8 @@ from ansible.errors import (
|
|
|
401
386
|
AnsibleError,
|
|
402
387
|
AnsibleFileNotFound,
|
|
403
388
|
)
|
|
404
|
-
from ansible.errors import AnsibleOptionsError
|
|
405
|
-
from ansible.module_utils.compat import selectors
|
|
406
389
|
from ansible.module_utils.six import PY3, text_type, binary_type
|
|
407
390
|
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
|
|
408
|
-
from ansible.module_utils.parsing.convert_bool import BOOLEANS, boolean
|
|
409
391
|
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
|
410
392
|
from ansible.plugins.shell.powershell import _parse_clixml
|
|
411
393
|
from ansible.utils.display import Display
|
|
@@ -746,8 +728,8 @@ class Connection(ConnectionBase):
|
|
|
746
728
|
self._add_args(b_command, b_args, u'disable batch mode for sshpass')
|
|
747
729
|
b_command += [b'-b', b'-']
|
|
748
730
|
|
|
749
|
-
if display.verbosity
|
|
750
|
-
b_command.append(b'-
|
|
731
|
+
if display.verbosity:
|
|
732
|
+
b_command.append(b'-' + (b'v' * display.verbosity))
|
|
751
733
|
|
|
752
734
|
# Next, we add ssh_args
|
|
753
735
|
ssh_args = self.get_option('ssh_args')
|
|
@@ -1240,31 +1222,13 @@ class Connection(ConnectionBase):
|
|
|
1240
1222
|
# Transfer methods to try
|
|
1241
1223
|
methods = []
|
|
1242
1224
|
|
|
1243
|
-
# Use the transfer_method option if set
|
|
1225
|
+
# Use the transfer_method option if set
|
|
1244
1226
|
ssh_transfer_method = self.get_option('ssh_transfer_method')
|
|
1245
|
-
scp_if_ssh = self.get_option('scp_if_ssh')
|
|
1246
|
-
if ssh_transfer_method is None and scp_if_ssh == 'smart':
|
|
1247
|
-
ssh_transfer_method = 'smart'
|
|
1248
1227
|
|
|
1249
|
-
if ssh_transfer_method
|
|
1250
|
-
|
|
1251
|
-
methods = smart_methods
|
|
1252
|
-
else:
|
|
1253
|
-
methods = [ssh_transfer_method]
|
|
1228
|
+
if ssh_transfer_method == 'smart':
|
|
1229
|
+
methods = smart_methods
|
|
1254
1230
|
else:
|
|
1255
|
-
|
|
1256
|
-
if not isinstance(scp_if_ssh, bool):
|
|
1257
|
-
scp_if_ssh = scp_if_ssh.lower()
|
|
1258
|
-
if scp_if_ssh in BOOLEANS:
|
|
1259
|
-
scp_if_ssh = boolean(scp_if_ssh, strict=False)
|
|
1260
|
-
elif scp_if_ssh != 'smart':
|
|
1261
|
-
raise AnsibleOptionsError('scp_if_ssh needs to be one of [smart|True|False]')
|
|
1262
|
-
if scp_if_ssh == 'smart':
|
|
1263
|
-
methods = smart_methods
|
|
1264
|
-
elif scp_if_ssh is True:
|
|
1265
|
-
methods = ['scp']
|
|
1266
|
-
else:
|
|
1267
|
-
methods = ['sftp']
|
|
1231
|
+
methods = [ssh_transfer_method]
|
|
1268
1232
|
|
|
1269
1233
|
for method in methods:
|
|
1270
1234
|
returncode = stdout = stderr = None
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# Copyright (c) 2017 Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
4
|
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
DOCUMENTATION = """
|
|
9
8
|
author: Ansible Core Team
|
|
@@ -148,8 +147,8 @@ DOCUMENTATION = """
|
|
|
148
147
|
seconds higher than the WS-Man operation timeout, thus make the connection more
|
|
149
148
|
robust on networks with long latency and/or many hops between server and client
|
|
150
149
|
network wise.
|
|
151
|
-
- Setting the difference
|
|
152
|
-
|
|
150
|
+
- Setting the difference between the operation and the read timeout to 10 seconds
|
|
151
|
+
aligns it to the defaults used in the winrm-module and the PSRP-module which also
|
|
153
152
|
uses 10 seconds (30 seconds for read timeout and 20 seconds for operation timeout)
|
|
154
153
|
- Corresponds to the C(operation_timeout_sec) and
|
|
155
154
|
C(read_timeout_sec) args in pywinrm so avoid setting these vars
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# Copyright: Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
|
|
8
7
|
class ModuleDocFragment(object):
|
|
@@ -11,7 +10,7 @@ class ModuleDocFragment(object):
|
|
|
11
10
|
DOCUMENTATION = r'''
|
|
12
11
|
attributes:
|
|
13
12
|
check_mode:
|
|
14
|
-
description: Can run in check_mode and return changed status prediction without modifying target
|
|
13
|
+
description: Can run in check_mode and return changed status prediction without modifying target, if not supported the action will be skipped.
|
|
15
14
|
diff_mode:
|
|
16
15
|
description: Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode
|
|
17
16
|
platform:
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# Copyright: (c) , Ansible Project
|
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
|
|
8
|
-
# WARNING: this is mostly here as a
|
|
7
|
+
# WARNING: this is mostly here as a convenience for documenting core behaviours, no plugin outside of ansible-core should use this file
|
|
9
8
|
class ModuleDocFragment(object):
|
|
10
9
|
|
|
11
10
|
# requires action_common
|
|
@@ -29,7 +28,7 @@ attributes:
|
|
|
29
28
|
support: full
|
|
30
29
|
platforms: all
|
|
31
30
|
until:
|
|
32
|
-
description: Denotes if this action
|
|
31
|
+
description: Denotes if this action obeys until/retry/poll keywords
|
|
33
32
|
support: full
|
|
34
33
|
tags:
|
|
35
34
|
description: Allows for the 'tags' keyword to control the selection of this action for execution
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Copyright: (c) 2015, Ansible, Inc
|
|
4
4
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
class ModuleDocFragment(object):
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Copyright (c) 2021 Ansible Project
|
|
2
2
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
3
|
-
from __future__ import
|
|
4
|
-
__metaclass__ = type
|
|
3
|
+
from __future__ import annotations
|
|
5
4
|
|
|
6
5
|
|
|
7
6
|
class ModuleDocFragment(object):
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Copyright: (c) 2017, Ansible Project
|
|
4
4
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
class ModuleDocFragment(object):
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Copyright: (c) 2017, Brian Coca <bcoca@redhat.com>
|
|
4
4
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
class ModuleDocFragment(object):
|
|
@@ -13,7 +12,7 @@ class ModuleDocFragment(object):
|
|
|
13
12
|
options:
|
|
14
13
|
decrypt:
|
|
15
14
|
description:
|
|
16
|
-
- This option controls the
|
|
15
|
+
- This option controls the auto-decryption of source files using vault.
|
|
17
16
|
type: bool
|
|
18
17
|
default: yes
|
|
19
18
|
version_added: '2.4'
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Copyright: (c) 2017, Ansible Project
|
|
4
4
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
5
|
-
from __future__ import
|
|
6
|
-
__metaclass__ = type
|
|
5
|
+
from __future__ import annotations
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
class ModuleDocFragment(object):
|