From cc9ed352dd547b19439cb5c9373f8529e6385314 Mon Sep 17 00:00:00 2001 From: Ganesh Nalawade Date: Mon, 4 Sep 2017 20:12:11 +0530 Subject: Ensure proper conversion while backing up of junos config (#28958) * Ensure proper conversion while backing up of junos config * Minor changes * Fix review comment * Open config backup file in binary mode --- lib/ansible/module_utils/junos.py | 4 ++-- lib/ansible/modules/network/junos/junos_config.py | 2 +- lib/ansible/plugins/action/junos_config.py | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/ansible/module_utils/junos.py b/lib/ansible/module_utils/junos.py index 7fde3f59b2..ac571c2d99 100644 --- a/lib/ansible/module_utils/junos.py +++ b/lib/ansible/module_utils/junos.py @@ -121,7 +121,7 @@ def load_configuration(module, candidate=None, action='merge', rollback=None, fo if format == 'xml': cfg.append(fromstring(candidate)) else: - cfg.text = to_text(candidate, encoding='latin1') + cfg.text = to_text(candidate, encoding='latin-1') else: cfg.append(candidate) return send_request(module, obj) @@ -187,7 +187,7 @@ def get_diff(module): output = reply.find('.//configuration-output') if output is not None: - return to_text(output.text, encoding='latin1').strip() + return to_text(output.text, encoding='latin-1').strip() def load_config(module, candidate, warnings, action='merge', format='xml'): diff --git a/lib/ansible/modules/network/junos/junos_config.py b/lib/ansible/modules/network/junos/junos_config.py index 9cffdfd314..f5c3399cfb 100644 --- a/lib/ansible/modules/network/junos/junos_config.py +++ b/lib/ansible/modules/network/junos/junos_config.py @@ -256,7 +256,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 = to_native(match.text, encoding='latin1') + config = to_native(match.text, encoding='latin-1') modified_candidate = candidate[:] for index, line in reversed(list(enumerate(candidate))): diff --git a/lib/ansible/plugins/action/junos_config.py b/lib/ansible/plugins/action/junos_config.py index aa9fa617ca..2b29171ded 100644 --- a/lib/ansible/plugins/action/junos_config.py +++ b/lib/ansible/plugins/action/junos_config.py @@ -27,7 +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.module_utils._text import to_bytes from ansible.utils.vars import merge_hash PRIVATE_KEYS_RE = re.compile('__.+__') @@ -75,7 +75,8 @@ 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(to_native(contents, encoding='latin1')) + with open(filename, 'wb') as f: + f.write(to_bytes(to_text(contents, encoding='latin-1'), encoding='utf-8')) return filename def _handle_template(self): -- cgit v1.2.1