mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-26 21:33:02 +00:00
This is a backport of PR #1053 as merged into main (452fb3d).
SUMMARY
Importing from ansible.module_utils._text is deprecated in ansible-core 2.20 and removed in 2.24. All imports of to_bytes, to_native, and to_text now use ansible.module_utils.common.text.converters.
Before:
from ansible.module_utils._text import to_bytes, to_native, to_text
After:
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
ISSUE TYPE
Bugfix Pull Request
COMPONENT NAME
plugins/module_utils/common.py
plugins/action/k8s_info.py
plugins/connection/kubectl.py
plugins/module_utils/{copy.py, k8s/runner.py}
plugins/modules/{k8s_cp.py, k8s_drain.py, k8s_exec.py, k8s_json_patch.py, k8s_scale.py, k8s_taint.py}
ADDITIONAL INFORMATION
It's not an actual Bugfix, more a lifecycle management to ensure compatibility with future Ansible versions.
Tested with ansible-core 2.20 to ensure no deprecation warnings are raised and with ansible-core 2.16 to ensure backward compatibility.
Patrially coauthored-by: GitHub Copilot with Claude Code 4.5 model.
Addresses issue #1052.
Reviewed-by: Bianca Henderson <beeankha@gmail.com>
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from __future__ import absolute_import, division, print_function
|
|
|
|
__metaclass__ = type
|
|
|
|
import json
|
|
import sys
|
|
from io import BytesIO
|
|
|
|
import ansible.module_utils.basic
|
|
import pytest
|
|
from ansible.module_utils.common._collections_compat import MutableMapping
|
|
from ansible.module_utils.common.text.converters import to_bytes
|
|
|
|
|
|
@pytest.fixture
|
|
def stdin(mocker, request):
|
|
old_args = ansible.module_utils.basic._ANSIBLE_ARGS
|
|
ansible.module_utils.basic._ANSIBLE_ARGS = None
|
|
old_argv = sys.argv
|
|
sys.argv = ["ansible_unittest"]
|
|
|
|
if isinstance(request.param, str):
|
|
args = request.param
|
|
elif isinstance(request.param, MutableMapping):
|
|
if "ANSIBLE_MODULE_ARGS" not in request.param:
|
|
request.param = {"ANSIBLE_MODULE_ARGS": request.param}
|
|
if "_ansible_remote_tmp" not in request.param["ANSIBLE_MODULE_ARGS"]:
|
|
request.param["ANSIBLE_MODULE_ARGS"]["_ansible_remote_tmp"] = "/tmp"
|
|
if "_ansible_keep_remote_files" not in request.param["ANSIBLE_MODULE_ARGS"]:
|
|
request.param["ANSIBLE_MODULE_ARGS"]["_ansible_keep_remote_files"] = False
|
|
args = json.dumps(request.param)
|
|
else:
|
|
raise Exception("Malformed data to the stdin pytest fixture")
|
|
|
|
fake_stdin = BytesIO(to_bytes(args, errors="surrogate_or_strict"))
|
|
mocker.patch("ansible.module_utils.basic.sys.stdin", mocker.MagicMock())
|
|
mocker.patch("ansible.module_utils.basic.sys.stdin.buffer", fake_stdin)
|
|
|
|
yield fake_stdin
|
|
|
|
ansible.module_utils.basic._ANSIBLE_ARGS = old_args
|
|
sys.argv = old_argv
|