mirror of
https://github.com/ansible/ansible.git
synced 2026-08-03 08:03:05 +02:00
modules: remove PY2 compat (#81990)
This commit is contained in:
@@ -375,7 +375,7 @@ from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.common.locale import get_best_parsable_locale
|
||||
from ansible.module_utils.common.respawn import has_respawned, probe_interpreters_for_module, respawn_module
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.module_utils.six import PY3, string_types
|
||||
from ansible.module_utils.six import string_types
|
||||
from ansible.module_utils.urls import fetch_file
|
||||
|
||||
DPKG_OPTIONS = 'force-confdef,force-confold'
|
||||
@@ -1260,13 +1260,13 @@ def main():
|
||||
# made any more complex than it already is to try and cover more, eg, custom interpreters taking over
|
||||
# system locations)
|
||||
|
||||
apt_pkg_name = 'python3-apt' if PY3 else 'python-apt'
|
||||
apt_pkg_name = 'python3-apt'
|
||||
|
||||
if has_respawned():
|
||||
# this shouldn't be possible; short-circuit early if it happens...
|
||||
module.fail_json(msg="{0} must be installed and visible from {1}.".format(apt_pkg_name, sys.executable))
|
||||
|
||||
interpreters = ['/usr/bin/python3', '/usr/bin/python2', '/usr/bin/python']
|
||||
interpreters = ['/usr/bin/python3', '/usr/bin/python']
|
||||
|
||||
interpreter = probe_interpreters_for_module(interpreters, 'apt')
|
||||
|
||||
|
||||
@@ -182,7 +182,6 @@ import time
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.common.respawn import has_respawned, probe_interpreters_for_module, respawn_module
|
||||
from ansible.module_utils.common.text.converters import to_native
|
||||
from ansible.module_utils.six import PY3
|
||||
from ansible.module_utils.urls import fetch_url
|
||||
|
||||
from ansible.module_utils.common.locale import get_best_parsable_locale
|
||||
@@ -664,13 +663,13 @@ def main():
|
||||
# made any more complex than it already is to try and cover more, eg, custom interpreters taking over
|
||||
# system locations)
|
||||
|
||||
apt_pkg_name = 'python3-apt' if PY3 else 'python-apt'
|
||||
apt_pkg_name = 'python3-apt'
|
||||
|
||||
if has_respawned():
|
||||
# this shouldn't be possible; short-circuit early if it happens...
|
||||
module.fail_json(msg="{0} must be installed and visible from {1}.".format(apt_pkg_name, sys.executable))
|
||||
|
||||
interpreters = ['/usr/bin/python3', '/usr/bin/python2', '/usr/bin/python']
|
||||
interpreters = ['/usr/bin/python3', '/usr/bin/python']
|
||||
|
||||
interpreter = probe_interpreters_for_module(interpreters, 'apt')
|
||||
|
||||
|
||||
@@ -21,8 +21,6 @@ import multiprocessing
|
||||
|
||||
from ansible.module_utils.common.text.converters import to_text, to_bytes
|
||||
|
||||
PY3 = sys.version_info[0] == 3
|
||||
|
||||
syslog.openlog('ansible-%s' % os.path.basename(__file__))
|
||||
syslog.syslog(syslog.LOG_NOTICE, 'Invoked with %s' % " ".join(sys.argv[1:]))
|
||||
|
||||
@@ -168,13 +166,18 @@ def _run_module(wrapped_cmd, jid):
|
||||
interpreter = _get_interpreter(cmd[0])
|
||||
if interpreter:
|
||||
cmd = interpreter + cmd
|
||||
script = subprocess.Popen(cmd, shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
script = subprocess.Popen(
|
||||
cmd,
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
shell=False,
|
||||
text=True,
|
||||
encoding="utf-8",
|
||||
errors="surrogateescape",
|
||||
)
|
||||
|
||||
(outdata, stderr) = script.communicate()
|
||||
if PY3:
|
||||
outdata = outdata.decode('utf-8', 'surrogateescape')
|
||||
stderr = stderr.decode('utf-8', 'surrogateescape')
|
||||
|
||||
(filtered_outdata, json_warnings) = _filter_non_json_lines(outdata)
|
||||
|
||||
|
||||
@@ -301,7 +301,6 @@ from ansible.module_utils.common.text.converters import to_bytes, to_native
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.common.process import get_bin_path
|
||||
from ansible.module_utils.common.locale import get_best_parsable_locale
|
||||
from ansible.module_utils.six import PY3
|
||||
|
||||
|
||||
# The AnsibleModule object
|
||||
@@ -705,7 +704,7 @@ def main():
|
||||
raise
|
||||
|
||||
# might be needed below
|
||||
if PY3 and hasattr(os, 'listxattr'):
|
||||
if hasattr(os, 'listxattr'):
|
||||
try:
|
||||
src_has_acls = 'system.posix_acl_access' in os.listxattr(src)
|
||||
except Exception as e:
|
||||
@@ -715,7 +714,7 @@ def main():
|
||||
# at this point we should always have tmp file
|
||||
module.atomic_move(b_mysrc, dest, unsafe_writes=module.params['unsafe_writes'])
|
||||
|
||||
if PY3 and hasattr(os, 'listxattr') and platform.system() == 'Linux' and not remote_src:
|
||||
if hasattr(os, 'listxattr') and platform.system() == 'Linux' and not remote_src:
|
||||
# atomic_move used above to copy src into dest might, in some cases,
|
||||
# use shutil.copy2 which in turn uses shutil.copystat.
|
||||
# Since Python 3.3, shutil.copystat copies file extended attributes:
|
||||
|
||||
@@ -81,7 +81,6 @@ from ansible.module_utils.common.sys_info import get_platform_subclass
|
||||
from ansible.module_utils.facts.system.service_mgr import ServiceMgrFactCollector
|
||||
from ansible.module_utils.facts.utils import get_file_lines, get_file_content
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.module_utils.six import PY3, text_type
|
||||
|
||||
STRATS = {
|
||||
'alpine': 'Alpine',
|
||||
@@ -532,21 +531,6 @@ class DarwinStrategy(BaseStrategy):
|
||||
self.name_types = ('HostName', 'ComputerName', 'LocalHostName')
|
||||
self.scrubbed_name = self._scrub_hostname(self.module.params['name'])
|
||||
|
||||
def _make_translation(self, replace_chars, replacement_chars, delete_chars):
|
||||
if PY3:
|
||||
return str.maketrans(replace_chars, replacement_chars, delete_chars)
|
||||
|
||||
if not isinstance(replace_chars, text_type) or not isinstance(replacement_chars, text_type):
|
||||
raise ValueError('replace_chars and replacement_chars must both be strings')
|
||||
if len(replace_chars) != len(replacement_chars):
|
||||
raise ValueError('replacement_chars must be the same length as replace_chars')
|
||||
|
||||
table = dict(zip((ord(c) for c in replace_chars), replacement_chars))
|
||||
for char in delete_chars:
|
||||
table[ord(char)] = None
|
||||
|
||||
return table
|
||||
|
||||
def _scrub_hostname(self, name):
|
||||
"""
|
||||
LocalHostName only accepts valid DNS characters while HostName and ComputerName
|
||||
@@ -558,7 +542,7 @@ class DarwinStrategy(BaseStrategy):
|
||||
name = to_text(name)
|
||||
replace_chars = u'\'"~`!@#$%^&*(){}[]/=?+\\|-_ '
|
||||
delete_chars = u".'"
|
||||
table = self._make_translation(replace_chars, u'-' * len(replace_chars), delete_chars)
|
||||
table = str.maketrans(replace_chars, '-' * len(replace_chars), delete_chars)
|
||||
name = name.translate(table)
|
||||
|
||||
# Replace multiple dashes with a single dash
|
||||
|
||||
@@ -324,7 +324,6 @@ except Exception:
|
||||
from ansible.module_utils.common.text.converters import to_native
|
||||
from ansible.module_utils.basic import AnsibleModule, is_executable, missing_required_lib
|
||||
from ansible.module_utils.common.locale import get_best_parsable_locale
|
||||
from ansible.module_utils.six import PY3
|
||||
|
||||
|
||||
#: Python one-liners to be run at the command line that will determine the
|
||||
@@ -451,15 +450,7 @@ def _is_present(module, req, installed_pkgs, pkg_command):
|
||||
|
||||
|
||||
def _get_pip(module, env=None, executable=None):
|
||||
# Older pip only installed under the "/usr/bin/pip" name. Many Linux
|
||||
# distros install it there.
|
||||
# By default, we try to use pip required for the current python
|
||||
# interpreter, so people can use pip to install modules dependencies
|
||||
candidate_pip_basenames = ('pip2', 'pip')
|
||||
if PY3:
|
||||
# pip under python3 installs the "/usr/bin/pip3" name
|
||||
candidate_pip_basenames = ('pip3',)
|
||||
|
||||
candidate_pip_basenames = ('pip3',)
|
||||
pip = None
|
||||
if executable is not None:
|
||||
if os.path.isabs(executable):
|
||||
@@ -600,13 +591,10 @@ def setup_virtualenv(module, env, chdir, out, err):
|
||||
if not _is_venv_command(module.params['virtualenv_command']):
|
||||
if virtualenv_python:
|
||||
cmd.append('-p%s' % virtualenv_python)
|
||||
elif PY3:
|
||||
# Ubuntu currently has a patch making virtualenv always
|
||||
# try to use python2. Since Ubuntu16 works without
|
||||
# python2 installed, this is a problem. This code mimics
|
||||
# the upstream behaviour of using the python which invoked
|
||||
# virtualenv to determine which python is used inside of
|
||||
# the virtualenv (when none are specified).
|
||||
else:
|
||||
# This code mimics the upstream behaviour of using the python
|
||||
# which invoked virtualenv to determine which python is used
|
||||
# inside of the virtualenv (when none are specified).
|
||||
cmd.append('-p%s' % sys.executable)
|
||||
|
||||
# if venv or pyvenv are used and virtualenv_python is defined, then
|
||||
|
||||
@@ -443,11 +443,10 @@ import json
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule, sanitize_keys
|
||||
from ansible.module_utils.six import PY2, PY3, binary_type, iteritems, string_types
|
||||
from ansible.module_utils.six import binary_type, iteritems, string_types
|
||||
from ansible.module_utils.six.moves.urllib.parse import urlencode, urlsplit
|
||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||
from ansible.module_utils.compat.datetime import utcnow, utcfromtimestamp
|
||||
@@ -719,7 +718,7 @@ def main():
|
||||
|
||||
if maybe_output:
|
||||
try:
|
||||
if PY3 and (r.fp is None or r.closed):
|
||||
if r.fp is None or r.closed:
|
||||
raise TypeError
|
||||
content = r.read()
|
||||
except (AttributeError, TypeError):
|
||||
@@ -770,8 +769,7 @@ def main():
|
||||
js = json.loads(u_content)
|
||||
uresp['json'] = js
|
||||
except Exception:
|
||||
if PY2:
|
||||
sys.exc_clear() # Avoid false positive traceback in fail_json() on Python 2
|
||||
...
|
||||
else:
|
||||
u_content = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user