diff --git a/changelogs/fragments/py3-maven_artifact.yaml b/changelogs/fragments/py3-maven_artifact.yaml new file mode 100644 index 00000000000..e5a34e781a6 --- /dev/null +++ b/changelogs/fragments/py3-maven_artifact.yaml @@ -0,0 +1,2 @@ +bugfixes: +- Fix bytes/text handling in maven_artifact that was causing tracebacks on Python3 diff --git a/lib/ansible/modules/packaging/language/maven_artifact.py b/lib/ansible/modules/packaging/language/maven_artifact.py index c1370abab5d..b5f842c7f88 100644 --- a/lib/ansible/modules/packaging/language/maven_artifact.py +++ b/lib/ansible/modules/packaging/language/maven_artifact.py @@ -349,8 +349,7 @@ class MavenDownloader: if not self.verify_md5(filename, url + ".md5"): response = self._request(url, "Failed to download artifact " + str(artifact), lambda r: r) if response: - f = open(filename, 'w') - # f.write(response.read()) + f = open(filename, 'wb') self._write_chunks(response, f, report_hook=self.chunk_report) f.close() else: @@ -366,19 +365,19 @@ class MavenDownloader: if bytes_so_far >= total_size: sys.stdout.write('\n') - def _write_chunks(self, response, file, chunk_size=8192, report_hook=None): - total_size = response.info().getheader('Content-Length').strip() + def _write_chunks(self, response, filehandle, chunk_size=8192, report_hook=None): + total_size = response.info().get('Content-Length').strip() total_size = int(total_size) bytes_so_far = 0 - while 1: + while True: chunk = response.read(chunk_size) bytes_so_far += len(chunk) if not chunk: break - file.write(chunk) + filehandle.write(chunk) if report_hook: report_hook(bytes_so_far, chunk_size, total_size)