mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-24 11:21:25 -07:00
Move uses of to_bytes, to_text, to_native to use the module_utils version (#17423)
We couldn't copy to_unicode, to_bytes, to_str into module_utils because of licensing. So once created it we had two sets of functions that did the same things but had different implementations. To remedy that, this change removes the ansible.utils.unicode versions of those functions.
This commit is contained in:
parent
7a9395b5e0
commit
4ed88512e4
89 changed files with 759 additions and 894 deletions
|
@ -20,7 +20,6 @@ from __future__ import (absolute_import, division, print_function)
|
|||
__metaclass__ = type
|
||||
|
||||
import base64
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
|
@ -31,12 +30,12 @@ from ansible.compat.six import iteritems, string_types, binary_type
|
|||
from ansible import constants as C
|
||||
from ansible.errors import AnsibleError, AnsibleParserError, AnsibleUndefinedVariable, AnsibleConnectionFailure
|
||||
from ansible.executor.task_result import TaskResult
|
||||
from ansible.module_utils._text import to_bytes, to_text
|
||||
from ansible.playbook.conditional import Conditional
|
||||
from ansible.playbook.task import Task
|
||||
from ansible.template import Templar
|
||||
from ansible.utils.encrypt import key_for_hostname
|
||||
from ansible.utils.listify import listify_lookup_plugin_terms
|
||||
from ansible.utils.unicode import to_unicode, to_bytes
|
||||
from ansible.vars.unsafe_proxy import UnsafeProxy, wrap_var
|
||||
|
||||
try:
|
||||
|
@ -130,7 +129,7 @@ class TaskExecutor:
|
|||
if isinstance(res, UnsafeProxy):
|
||||
return res._obj
|
||||
elif isinstance(res, binary_type):
|
||||
return to_unicode(res, errors='strict')
|
||||
return to_text(res, errors='surrogate_or_strict')
|
||||
elif isinstance(res, dict):
|
||||
for k in res:
|
||||
res[k] = _clean_res(res[k])
|
||||
|
@ -144,16 +143,16 @@ class TaskExecutor:
|
|||
display.debug("done dumping result, returning")
|
||||
return res
|
||||
except AnsibleError as e:
|
||||
return dict(failed=True, msg=to_unicode(e, nonstring='simplerepr'))
|
||||
return dict(failed=True, msg=to_text(e, nonstring='simplerepr'))
|
||||
except Exception as e:
|
||||
return dict(failed=True, msg='Unexpected failure during module execution.', exception=to_unicode(traceback.format_exc()), stdout='')
|
||||
return dict(failed=True, msg='Unexpected failure during module execution.', exception=to_text(traceback.format_exc()), stdout='')
|
||||
finally:
|
||||
try:
|
||||
self._connection.close()
|
||||
except AttributeError:
|
||||
pass
|
||||
except Exception as e:
|
||||
display.debug(u"error closing connection: %s" % to_unicode(e))
|
||||
display.debug(u"error closing connection: %s" % to_text(e))
|
||||
|
||||
def _get_loop_items(self):
|
||||
'''
|
||||
|
@ -177,16 +176,18 @@ class TaskExecutor:
|
|||
items = None
|
||||
if self._task.loop:
|
||||
if self._task.loop in self._shared_loader_obj.lookup_loader:
|
||||
#TODO: remove convert_bare true and deprecate this in with_
|
||||
# TODO: remove convert_bare true and deprecate this in with_
|
||||
if self._task.loop == 'first_found':
|
||||
# first_found loops are special. If the item is undefined
|
||||
# then we want to fall through to the next value rather
|
||||
# than failing.
|
||||
loop_terms = listify_lookup_plugin_terms(terms=self._task.loop_args, templar=templar, loader=self._loader, fail_on_undefined=False, convert_bare=True)
|
||||
loop_terms = listify_lookup_plugin_terms(terms=self._task.loop_args, templar=templar,
|
||||
loader=self._loader, fail_on_undefined=False, convert_bare=True)
|
||||
loop_terms = [t for t in loop_terms if not templar._contains_vars(t)]
|
||||
else:
|
||||
try:
|
||||
loop_terms = listify_lookup_plugin_terms(terms=self._task.loop_args, templar=templar, loader=self._loader, fail_on_undefined=True, convert_bare=True)
|
||||
loop_terms = listify_lookup_plugin_terms(terms=self._task.loop_args, templar=templar,
|
||||
loader=self._loader, fail_on_undefined=True, convert_bare=True)
|
||||
except AnsibleUndefinedVariable as e:
|
||||
display.deprecated("Skipping task due to undefined Error, in the future this will be a fatal error.: %s" % to_bytes(e))
|
||||
return None
|
||||
|
@ -195,7 +196,7 @@ class TaskExecutor:
|
|||
mylookup = self._shared_loader_obj.lookup_loader.get(self._task.loop, loader=self._loader, templar=templar)
|
||||
|
||||
# give lookup task 'context' for subdir (mostly needed for first_found)
|
||||
for subdir in ['template', 'var', 'file']: #TODO: move this to constants?
|
||||
for subdir in ['template', 'var', 'file']: # TODO: move this to constants?
|
||||
if subdir in self._task.action:
|
||||
break
|
||||
setattr(mylookup,'_subdir', subdir + 's')
|
||||
|
@ -239,13 +240,15 @@ class TaskExecutor:
|
|||
label = None
|
||||
loop_pause = 0
|
||||
if self._task.loop_control:
|
||||
# the value may be 'None', so we still need to default it back to 'item'
|
||||
# the value may be 'None', so we still need to default it back to 'item'
|
||||
loop_var = self._task.loop_control.loop_var or 'item'
|
||||
label = self._task.loop_control.label or ('{{' + loop_var + '}}')
|
||||
loop_pause = self._task.loop_control.pause or 0
|
||||
|
||||
if loop_var in task_vars:
|
||||
display.warning("The loop variable '%s' is already in use. You should set the `loop_var` value in the `loop_control` option for the task to something else to avoid variable collisions and unexpected behavior." % loop_var)
|
||||
display.warning(u"The loop variable '%s' is already in use."
|
||||
u"You should set the `loop_var` value in the `loop_control` option for the task"
|
||||
u" to something else to avoid variable collisions and unexpected behavior." % loop_var)
|
||||
|
||||
ran_once = False
|
||||
items = self._squash_items(items, loop_var, task_vars)
|
||||
|
@ -263,7 +266,7 @@ class TaskExecutor:
|
|||
tmp_task._parent = self._task._parent
|
||||
tmp_play_context = self._play_context.copy()
|
||||
except AnsibleParserError as e:
|
||||
results.append(dict(failed=True, msg=to_unicode(e)))
|
||||
results.append(dict(failed=True, msg=to_text(e)))
|
||||
continue
|
||||
|
||||
# now we swap the internal task and play context with their copies,
|
||||
|
@ -279,7 +282,7 @@ class TaskExecutor:
|
|||
res[loop_var] = item
|
||||
res['_ansible_item_result'] = True
|
||||
|
||||
if not label is None:
|
||||
if label is not None:
|
||||
templar = Templar(loader=self._loader, shared_loader_obj=self._shared_loader_obj, variables=self._job_vars)
|
||||
res['_ansible_item_label'] = templar.template(label, fail_on_undefined=False)
|
||||
|
||||
|
@ -421,7 +424,7 @@ class TaskExecutor:
|
|||
include_file = templar.template(include_file)
|
||||
return dict(include=include_file, include_variables=include_variables)
|
||||
|
||||
#TODO: not needed?
|
||||
# TODO: not needed?
|
||||
# if this task is a IncludeRole, we just return now with a success code so the main thread can expand the task list for the given host
|
||||
elif self._task.action == 'include_role':
|
||||
include_variables = self._task.args.copy()
|
||||
|
@ -482,7 +485,7 @@ class TaskExecutor:
|
|||
try:
|
||||
result = self._handler.run(task_vars=variables)
|
||||
except AnsibleConnectionFailure as e:
|
||||
return dict(unreachable=True, msg=to_unicode(e))
|
||||
return dict(unreachable=True, msg=to_text(e))
|
||||
display.debug("handler run complete")
|
||||
|
||||
# preserve no log
|
||||
|
@ -666,7 +669,7 @@ class TaskExecutor:
|
|||
try:
|
||||
cmd = subprocess.Popen(['ssh','-o','ControlPersist'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
(out, err) = cmd.communicate()
|
||||
err = to_unicode(err)
|
||||
err = to_text(err)
|
||||
if u"Bad configuration option" in err or u"Usage:" in err:
|
||||
conn_type = "paramiko"
|
||||
except OSError:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue