From fafe5bba59163c525b82b6eaf12d0d4627a79bf7 Mon Sep 17 00:00:00 2001 From: James Cooke Date: Mon, 9 Jan 2017 20:21:51 +0000 Subject: [PATCH] Fix authorized_key crash in Python3 with remote key file (#20037) * Decode downloaded keys bytes if Python3 * Fixes #20007 * Thanks @georgepsarakis --- lib/ansible/modules/system/authorized_key.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/ansible/modules/system/authorized_key.py b/lib/ansible/modules/system/authorized_key.py index d291a68d42b..aa2c9d21a4b 100644 --- a/lib/ansible/modules/system/authorized_key.py +++ b/lib/ansible/modules/system/authorized_key.py @@ -227,6 +227,7 @@ import re import shlex from operator import itemgetter +from ansible.module_utils._text import to_native from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.pycompat24 import get_exception from ansible.module_utils.urls import fetch_url @@ -537,6 +538,9 @@ def enforce_state(module, params): except Exception: module.fail_json(msg=error_msg % key) + # resp.read gives bytes on python3, convert to native string type + key = to_native(key, errors='surrogate_or_strict') + # extract individual keys into an array, skipping blank lines and comments new_keys = [s for s in key.splitlines() if s and not s.startswith('#')]