Fix a traceback with python3 and diff output

When retrieving file contents for diffing we need to get the contents as
binary.  Otherwise python3 will try to convert the file to text and fail
with non-decodable contents.

Fixes #23171
pull/23426/head
Toshio Kuratomi 8 years ago
parent d4bd54d3b8
commit 2fdb8e7f90

@ -952,12 +952,12 @@ class ActionBase(with_metaclass(ABCMeta, object)):
else:
display.debug("Reading local copy of the file %s" % source)
try:
src = open(source)
src_contents = src.read()
with open(source, 'rb') as src:
src_contents = src.read()
except Exception as e:
raise AnsibleError("Unexpected error while reading source (%s) for diff: %s " % (source, str(e)))
if "\x00" in src_contents:
if b"\x00" in src_contents:
diff['src_binary'] = 1
else:
diff['after_header'] = source

Loading…
Cancel
Save