summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathaniel Case <this.is@nathanielca.se>2017-04-27 11:44:26 -0400
committerGitHub <noreply@github.com>2017-04-27 11:44:26 -0400
commit689b93bf145a48bf641705a00c5d1996e3dc45dc (patch)
tree646db079d7f3db53332a8c7e6846c697e2bbd5db
parent1c61b9bae7dae72b6e7d3f3f2fbb76fda5555552 (diff)
downloadansible-689b93bf145a48bf641705a00c5d1996e3dc45dc.tar.gz
Junos_config unicode (#23369)
* Try to handle unicode output more sensibly * Appears I'm getting latin1 instead Ugh.
-rw-r--r--lib/ansible/module_utils/junos.py6
-rw-r--r--lib/ansible/modules/network/junos/junos_config.py5
-rw-r--r--lib/ansible/plugins/action/junos_config.py4
-rw-r--r--test/sanity/pep8/legacy-files.txt1
4 files changed, 8 insertions, 8 deletions
diff --git a/lib/ansible/module_utils/junos.py b/lib/ansible/module_utils/junos.py
index f22dc7c395..a1b7875ba7 100644
--- a/lib/ansible/module_utils/junos.py
+++ b/lib/ansible/module_utils/junos.py
@@ -24,6 +24,7 @@ from ansible.module_utils.basic import env_fallback, return_values
from ansible.module_utils.netconf import send_request, children
from ansible.module_utils.netconf import discard_changes, validate
from ansible.module_utils.six import string_types
+from ansible.module_utils._text import to_text
ACTIONS = frozenset(['merge', 'override', 'replace', 'update', 'set'])
JSON_ACTIONS = frozenset(['merge', 'override', 'update'])
@@ -111,7 +112,7 @@ def load_configuration(module, candidate=None, action='merge', rollback=None, fo
if format == 'xml':
cfg.append(fromstring(candidate))
else:
- cfg.text = candidate
+ cfg.text = to_text(candidate, encoding='latin1')
else:
cfg.append(candidate)
return send_request(module, obj)
@@ -163,7 +164,7 @@ def get_diff(module):
reply = get_configuration(module, compare=True, format='text')
output = reply.find('.//configuration-output')
if output is not None:
- return output.text
+ return to_text(output.text, encoding='latin1').strip()
def load_config(module, candidate, warnings, action='merge', commit=False, format='xml',
comment=None, confirm=False, confirm_timeout=None):
@@ -180,7 +181,6 @@ def load_config(module, candidate, warnings, action='merge', commit=False, forma
diff = get_diff(module)
if diff:
- diff = str(diff).strip()
if commit:
commit_configuration(module, confirm=confirm, comment=comment,
confirm_timeout=confirm_timeout)
diff --git a/lib/ansible/modules/network/junos/junos_config.py b/lib/ansible/modules/network/junos/junos_config.py
index e26067f200..673de42aff 100644
--- a/lib/ansible/modules/network/junos/junos_config.py
+++ b/lib/ansible/modules/network/junos/junos_config.py
@@ -195,6 +195,7 @@ from ansible.module_utils.junos import junos_argument_spec
from ansible.module_utils.junos import check_args as junos_check_args
from ansible.module_utils.netconf import send_request
from ansible.module_utils.six import string_types
+from ansible.module_utils._text import to_text, to_native
if sys.version_info < (2, 7):
from xml.parsers.expat import ExpatError
@@ -238,7 +239,7 @@ def filter_delete_statements(module, candidate):
if match is None:
# Could not find configuration-set in reply, perhaps device does not support it?
return candidate
- config = str(match.text)
+ config = to_native(match.text, encoding='latin1')
modified_candidate = candidate[:]
for index, line in enumerate(candidate):
@@ -331,7 +332,7 @@ def main():
else:
module.fail_json(msg='unable to retrieve device configuration')
- result['__backup__'] = str(match.text).strip()
+ result['__backup__'] = match.text.strip()
if module.params['rollback']:
if not module.check_mode:
diff --git a/lib/ansible/plugins/action/junos_config.py b/lib/ansible/plugins/action/junos_config.py
index d7ac8a1949..b166f23b3a 100644
--- a/lib/ansible/plugins/action/junos_config.py
+++ b/lib/ansible/plugins/action/junos_config.py
@@ -27,6 +27,7 @@ import glob
from ansible.plugins.action.junos import ActionModule as _ActionModule
from ansible.module_utils._text import to_text
from ansible.module_utils.six.moves.urllib.parse import urlsplit
+from ansible.module_utils._text import to_native
from ansible.utils.vars import merge_hash
PRIVATE_KEYS_RE = re.compile('__.+__')
@@ -74,7 +75,7 @@ class ActionModule(_ActionModule):
os.remove(fn)
tstamp = time.strftime("%Y-%m-%d@%H:%M:%S", time.localtime(time.time()))
filename = '%s/%s_config.%s' % (backup_path, host, tstamp)
- open(filename, 'w').write(contents)
+ open(filename, 'w').write(to_native(contents, encoding='latin1'))
return filename
def _handle_template(self):
@@ -110,4 +111,3 @@ class ActionModule(_ActionModule):
searchpath.append(os.path.dirname(source))
self._templar.environment.loader.searchpath = searchpath
self._task.args['src'] = self._templar.template(template_data)
-
diff --git a/test/sanity/pep8/legacy-files.txt b/test/sanity/pep8/legacy-files.txt
index 83f5bf5329..c1625aae4a 100644
--- a/test/sanity/pep8/legacy-files.txt
+++ b/test/sanity/pep8/legacy-files.txt
@@ -845,7 +845,6 @@ lib/ansible/plugins/action/group_by.py
lib/ansible/plugins/action/ios_template.py
lib/ansible/plugins/action/iosxr_template.py
lib/ansible/plugins/action/junos.py
-lib/ansible/plugins/action/junos_config.py
lib/ansible/plugins/action/junos_template.py
lib/ansible/plugins/action/normal.py
lib/ansible/plugins/action/nxos.py