ansible-core 2.16.5__py3-none-any.whl → 2.17.0b1__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 +5 -27
- 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 +32 -25
- ansible/constants.py +41 -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 +1 -3
- 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 +10 -5
- 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 +2 -3
- 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 +2 -3
- 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 +2 -3
- 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 +3 -4
- 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 +63 -188
- 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 +25 -9
- 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 +14 -4
- 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 +2 -4
- 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 +6 -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 -2
- 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 +17 -6
- 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 +18 -8
- ansible/plugins/strategy/host_pinned.py +1 -3
- ansible/plugins/strategy/linear.py +23 -23
- 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 +14 -27
- 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 +9 -29
- ansible/vars/manager.py +24 -6
- ansible/vars/reserved.py +1 -3
- {ansible_core-2.16.5.data → ansible_core-2.17.0b1.data}/scripts/ansible-test +1 -2
- {ansible_core-2.16.5.dist-info → ansible_core-2.17.0b1.dist-info}/METADATA +3 -3
- ansible_core-2.17.0b1.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/ansible_doc.py +1 -1
- 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.5.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.5.dist-info → ansible_core-2.17.0b1.dist-info}/COPYING +0 -0
- {ansible_core-2.16.5.dist-info → ansible_core-2.17.0b1.dist-info}/WHEEL +0 -0
- {ansible_core-2.16.5.dist-info → ansible_core-2.17.0b1.dist-info}/entry_points.txt +0 -0
- {ansible_core-2.16.5.dist-info → ansible_core-2.17.0b1.dist-info}/top_level.txt +0 -0
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
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 subprocess
|
|
@@ -16,11 +15,11 @@ from ansible.module_utils.facts.collector import BaseFactCollector
|
|
|
16
15
|
# package manager, put the preferred one last. If there is an
|
|
17
16
|
# ansible module, use that as the value for the 'name' key.
|
|
18
17
|
PKG_MGRS = [{'path': '/usr/bin/rpm-ostree', 'name': 'atomic_container'},
|
|
19
|
-
{'path': '/usr/bin/yum', 'name': 'yum'},
|
|
20
18
|
|
|
21
19
|
# NOTE the `path` key for dnf/dnf5 is effectively discarded when matched for Red Hat OS family,
|
|
22
20
|
# special logic to infer the default `pkg_mgr` is used in `PkgMgrFactCollector._check_rh_versions()`
|
|
23
21
|
# leaving them here so a list of package modules can be constructed by iterating over `name` keys
|
|
22
|
+
{'path': '/usr/bin/yum', 'name': 'dnf'},
|
|
24
23
|
{'path': '/usr/bin/dnf-3', 'name': 'dnf'},
|
|
25
24
|
{'path': '/usr/bin/dnf5', 'name': 'dnf5'},
|
|
26
25
|
|
|
@@ -46,7 +45,6 @@ PKG_MGRS = [{'path': '/usr/bin/rpm-ostree', 'name': 'atomic_container'},
|
|
|
46
45
|
{'path': '/usr/bin/swupd', 'name': 'swupd'},
|
|
47
46
|
{'path': '/usr/sbin/sorcery', 'name': 'sorcery'},
|
|
48
47
|
{'path': '/usr/bin/installp', 'name': 'installp'},
|
|
49
|
-
{'path': '/QOpenSys/pkgs/bin/yum', 'name': 'yum'},
|
|
50
48
|
]
|
|
51
49
|
|
|
52
50
|
|
|
@@ -70,39 +68,18 @@ class PkgMgrFactCollector(BaseFactCollector):
|
|
|
70
68
|
super(PkgMgrFactCollector, self).__init__(*args, **kwargs)
|
|
71
69
|
self._default_unknown_pkg_mgr = 'unknown'
|
|
72
70
|
|
|
73
|
-
def _check_rh_versions(self
|
|
71
|
+
def _check_rh_versions(self):
|
|
74
72
|
if os.path.exists('/run/ostree-booted'):
|
|
75
73
|
return "atomic_container"
|
|
76
74
|
|
|
77
|
-
# Reset whatever was matched from PKG_MGRS, infer the default pkg_mgr below
|
|
78
|
-
pkg_mgr_name = self._default_unknown_pkg_mgr
|
|
79
75
|
# Since /usr/bin/dnf and /usr/bin/microdnf can point to different versions of dnf in different distributions
|
|
80
76
|
# the only way to infer the default package manager is to look at the binary they are pointing to.
|
|
81
77
|
# /usr/bin/microdnf is likely used only in fedora minimal container so /usr/bin/dnf takes precedence
|
|
82
78
|
for bin_path in ('/usr/bin/dnf', '/usr/bin/microdnf'):
|
|
83
79
|
if os.path.exists(bin_path):
|
|
84
|
-
|
|
85
|
-
break
|
|
86
|
-
|
|
87
|
-
try:
|
|
88
|
-
major_version = collected_facts['ansible_distribution_major_version']
|
|
89
|
-
if collected_facts['ansible_distribution'] == 'Kylin Linux Advanced Server':
|
|
90
|
-
major_version = major_version.lstrip('V')
|
|
91
|
-
distro_major_ver = int(major_version)
|
|
92
|
-
except ValueError:
|
|
93
|
-
# a non integer magical future version
|
|
94
|
-
return self._default_unknown_pkg_mgr
|
|
95
|
-
|
|
96
|
-
if (
|
|
97
|
-
(collected_facts['ansible_distribution'] == 'Fedora' and distro_major_ver < 23)
|
|
98
|
-
or (collected_facts['ansible_distribution'] == 'Kylin Linux Advanced Server' and distro_major_ver < 10)
|
|
99
|
-
or (collected_facts['ansible_distribution'] == 'Amazon' and distro_major_ver < 2022)
|
|
100
|
-
or (collected_facts['ansible_distribution'] == 'TencentOS' and distro_major_ver < 3)
|
|
101
|
-
or distro_major_ver < 8 # assume RHEL or a clone
|
|
102
|
-
) and any(pm for pm in PKG_MGRS if pm['name'] == 'yum' and os.path.exists(pm['path'])):
|
|
103
|
-
pkg_mgr_name = 'yum'
|
|
80
|
+
return 'dnf5' if os.path.realpath(bin_path) == '/usr/bin/dnf5' else 'dnf'
|
|
104
81
|
|
|
105
|
-
return
|
|
82
|
+
return self._default_unknown_pkg_mgr
|
|
106
83
|
|
|
107
84
|
def _check_apt_flavor(self, pkg_mgr_name):
|
|
108
85
|
# Check if '/usr/bin/apt' is APT-RPM or an ordinary (dpkg-based) APT.
|
|
@@ -143,9 +120,9 @@ class PkgMgrFactCollector(BaseFactCollector):
|
|
|
143
120
|
# installed or available to the distro, the ansible_fact entry should be
|
|
144
121
|
# the default package manager officially supported by the distro.
|
|
145
122
|
if collected_facts['ansible_os_family'] == "RedHat":
|
|
146
|
-
pkg_mgr_name = self._check_rh_versions(
|
|
123
|
+
pkg_mgr_name = self._check_rh_versions()
|
|
147
124
|
elif collected_facts['ansible_os_family'] == 'Debian' and pkg_mgr_name != 'apt':
|
|
148
|
-
# It's possible to install
|
|
125
|
+
# It's possible to install dnf, zypper, rpm, etc inside of
|
|
149
126
|
# Debian. Doing so does not mean the system wants to use them.
|
|
150
127
|
pkg_mgr_name = 'apt'
|
|
151
128
|
elif collected_facts['ansible_os_family'] == 'Altlinux':
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import re
|
|
20
19
|
import socket
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import sys
|
|
20
19
|
|
|
@@ -15,8 +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
|
-
from __future__ import
|
|
19
|
-
__metaclass__ = type
|
|
18
|
+
from __future__ import annotations
|
|
20
19
|
|
|
21
20
|
import ansible.module_utils.compat.typing as t
|
|
22
21
|
|
|
@@ -15,8 +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
|
-
from __future__ import
|
|
19
|
-
__metaclass__ = type
|
|
18
|
+
from __future__ import annotations
|
|
20
19
|
|
|
21
20
|
import os
|
|
22
21
|
import platform
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import ansible.module_utils.compat.typing as t
|
|
20
19
|
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import getpass
|
|
20
19
|
import os
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import multiprocessing
|
|
20
19
|
import multiprocessing.pool as mp
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import fcntl
|
|
20
19
|
import os
|
|
@@ -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
|
import ansible.module_utils.compat.typing as t
|
|
23
22
|
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
from ansible.module_utils.facts.virtual.freebsd import FreeBSDVirtual, VirtualCollector
|
|
20
19
|
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import os
|
|
20
19
|
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import os
|
|
20
19
|
import re
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import glob
|
|
20
19
|
import os
|
|
@@ -176,7 +175,7 @@ class LinuxVirtual(Virtual):
|
|
|
176
175
|
virtual_facts['virtualization_type'] = 'RHEV'
|
|
177
176
|
found_virt = True
|
|
178
177
|
|
|
179
|
-
if product_name in ('VMware Virtual Platform', 'VMware7,1'):
|
|
178
|
+
if product_name in ('VMware Virtual Platform', 'VMware7,1', 'VMware20,1'):
|
|
180
179
|
guest_tech.add('VMware')
|
|
181
180
|
if not found_virt:
|
|
182
181
|
virtual_facts['virtualization_type'] = 'VMware'
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import os
|
|
20
19
|
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import re
|
|
20
19
|
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import os
|
|
20
19
|
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
from __future__ import
|
|
17
|
-
__metaclass__ = type
|
|
16
|
+
from __future__ import annotations
|
|
18
17
|
|
|
19
18
|
import re
|
|
20
19
|
|
|
@@ -24,8 +24,7 @@
|
|
|
24
24
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
25
25
|
#
|
|
26
26
|
|
|
27
|
-
from __future__ import
|
|
28
|
-
__metaclass__ = type
|
|
27
|
+
from __future__ import annotations
|
|
29
28
|
|
|
30
29
|
import json # pylint: disable=unused-import
|
|
31
30
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Copyright: 2017, Ansible Project
|
|
2
2
|
# Simplified BSD License (see licenses/simplified_bsd.txt or https://opensource.org/licenses/BSD-2-Clause )
|
|
3
3
|
|
|
4
|
-
from __future__ import
|
|
5
|
-
__metaclass__ = type
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
from ansible.module_utils.six import binary_type, text_type
|
|
8
7
|
from ansible.module_utils.common.text.converters import to_text
|
|
@@ -372,8 +372,11 @@ Function Get-PendingRebootStatus {
|
|
|
372
372
|
<#
|
|
373
373
|
.SYNOPSIS
|
|
374
374
|
Check if reboot is required, if so notify CA.
|
|
375
|
-
Function returns true if computer has a pending reboot
|
|
376
|
-
|
|
375
|
+
Function returns true if computer has a pending reboot.
|
|
376
|
+
|
|
377
|
+
People should not be using this function, it is kept
|
|
378
|
+
just for backwards compatibility.
|
|
379
|
+
#>
|
|
377
380
|
$featureData = Invoke-CimMethod -EA Ignore -Name GetServerFeature -Namespace root\microsoft\windows\servermanager -Class MSFT_ServerManagerTasks
|
|
378
381
|
$regData = Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" "PendingFileRenameOperations" -EA Ignore
|
|
379
382
|
$CBSRebootStatus = Get-ChildItem "HKLM:\\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing" -ErrorAction SilentlyContinue |
|
|
@@ -355,7 +355,7 @@ Function Invoke-WithWebRequest {
|
|
|
355
355
|
.PARAMETER Module
|
|
356
356
|
The Ansible.Basic module to set the return values for. This will set the following return values;
|
|
357
357
|
elapsed - The total time, in seconds, that it took to send the web request and process the response
|
|
358
|
-
msg - The human
|
|
358
|
+
msg - The human-readable description of the response status code
|
|
359
359
|
status_code - An int that is the response status code
|
|
360
360
|
|
|
361
361
|
.PARAMETER Request
|
|
@@ -26,11 +26,12 @@
|
|
|
26
26
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
|
27
27
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
|
|
29
|
-
from __future__ import
|
|
30
|
-
__metaclass__ = type
|
|
29
|
+
from __future__ import annotations
|
|
31
30
|
|
|
32
31
|
import sys
|
|
33
32
|
|
|
33
|
+
from ansible.module_utils.common.warnings import deprecate
|
|
34
|
+
|
|
34
35
|
|
|
35
36
|
def get_exception():
|
|
36
37
|
"""Get the current exception.
|
|
@@ -44,10 +45,29 @@ def get_exception():
|
|
|
44
45
|
e = get_exception()
|
|
45
46
|
|
|
46
47
|
"""
|
|
48
|
+
deprecate(
|
|
49
|
+
msg='The `ansible.module_utils.pycompat24.get_exception` '
|
|
50
|
+
'function is deprecated.',
|
|
51
|
+
version='2.19',
|
|
52
|
+
)
|
|
47
53
|
return sys.exc_info()[1]
|
|
48
54
|
|
|
49
55
|
|
|
50
|
-
|
|
56
|
+
def __getattr__(importable_name):
|
|
57
|
+
"""Inject import-time deprecation warning for ``literal_eval()``."""
|
|
58
|
+
if importable_name == 'literal_eval':
|
|
59
|
+
deprecate(
|
|
60
|
+
msg=f'The `ansible.module_utils.pycompat24.'
|
|
61
|
+
f'{importable_name}` function is deprecated.',
|
|
62
|
+
version='2.19',
|
|
63
|
+
)
|
|
64
|
+
from ast import literal_eval
|
|
65
|
+
return literal_eval
|
|
66
|
+
|
|
67
|
+
raise AttributeError(
|
|
68
|
+
f'cannot import name {importable_name !r} '
|
|
69
|
+
f'has no attribute ({__file__ !s})',
|
|
70
|
+
)
|
|
51
71
|
|
|
52
72
|
|
|
53
|
-
__all__ = ('get_exception', 'literal_eval')
|
|
73
|
+
__all__ = ('get_exception', 'literal_eval') # pylint: disable=undefined-all-variable
|
ansible/module_utils/service.py
CHANGED
|
@@ -26,8 +26,7 @@
|
|
|
26
26
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
|
27
27
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
|
|
29
|
-
from __future__ import
|
|
30
|
-
__metaclass__ = type
|
|
29
|
+
from __future__ import annotations
|
|
31
30
|
|
|
32
31
|
import glob
|
|
33
32
|
import os
|
|
@@ -111,8 +110,8 @@ def fail_if_missing(module, found, service, msg=''):
|
|
|
111
110
|
This function will return an error or exit gracefully depending on check mode status
|
|
112
111
|
and if the service is missing or not.
|
|
113
112
|
|
|
114
|
-
:arg module: is an
|
|
115
|
-
:arg found: boolean indicating if services
|
|
113
|
+
:arg module: is an AnsibleModule object, used for it's utility methods
|
|
114
|
+
:arg found: boolean indicating if services were found or not
|
|
116
115
|
:arg service: name of service
|
|
117
116
|
:kw msg: extra info to append to error/success msg when missing
|
|
118
117
|
'''
|
|
@@ -166,7 +165,7 @@ def daemonize(module, cmd):
|
|
|
166
165
|
'''
|
|
167
166
|
Execute a command while detaching as a daemon, returns rc, stdout, and stderr.
|
|
168
167
|
|
|
169
|
-
:arg module: is an
|
|
168
|
+
:arg module: is an AnsibleModule object, used for it's utility methods
|
|
170
169
|
:arg cmd: is a list or string representing the command and options to run
|
|
171
170
|
|
|
172
171
|
This is complex because daemonization is hard for people.
|
|
@@ -275,3 +274,30 @@ def check_ps(module, pattern):
|
|
|
275
274
|
if pattern in line:
|
|
276
275
|
return True
|
|
277
276
|
return False
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
def is_systemd_managed(module):
|
|
280
|
+
"""
|
|
281
|
+
Find out if the machine supports systemd or not
|
|
282
|
+
:arg module: is an AnsibleModule object, used for it's utility methods
|
|
283
|
+
|
|
284
|
+
Returns True if the system supports systemd, False if not.
|
|
285
|
+
"""
|
|
286
|
+
# tools must be installed
|
|
287
|
+
if module.get_bin_path('systemctl'):
|
|
288
|
+
# This should show if systemd is the boot init system, if checking init failed to mark as systemd
|
|
289
|
+
# these mirror systemd's own sd_boot test http://www.freedesktop.org/software/systemd/man/sd_booted.html
|
|
290
|
+
for canary in ["/run/systemd/system/", "/dev/.run/systemd/", "/dev/.systemd/"]:
|
|
291
|
+
if os.path.exists(canary):
|
|
292
|
+
return True
|
|
293
|
+
|
|
294
|
+
# If all else fails, check if init is the systemd command, using comm as cmdline could be symlink
|
|
295
|
+
try:
|
|
296
|
+
with open('/proc/1/comm', 'r') as init_proc:
|
|
297
|
+
init = init_proc.readline().strip()
|
|
298
|
+
return init == 'systemd'
|
|
299
|
+
except IOError:
|
|
300
|
+
# If comm doesn't exist, old kernel, no systemd
|
|
301
|
+
return False
|
|
302
|
+
|
|
303
|
+
return False
|
ansible/module_utils/splitter.py
CHANGED
|
@@ -26,8 +26,7 @@
|
|
|
26
26
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
|
27
27
|
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
|
|
29
|
-
from __future__ import
|
|
30
|
-
__metaclass__ = type
|
|
29
|
+
from __future__ import annotations
|
|
31
30
|
|
|
32
31
|
|
|
33
32
|
def _get_quote_state(token, quote_char):
|