Fix ansible-pull on python3

On python3, we can't write bytes directly to sys.stdout.

(cherry picked from commit 60acfd1e87)
This commit is contained in:
Toshio Kuratomi 2016-10-17 15:58:23 -07:00
parent 924e0726df
commit b373f67368
2 changed files with 11 additions and 4 deletions

View file

@ -24,7 +24,7 @@ import shlex
import subprocess
import select
from ansible.compat.six import PY2
from ansible.compat.six import PY2, PY3
from ansible.module_utils._text import to_bytes
def run_cmd(cmd, live=False, readsize=10):
@ -51,7 +51,11 @@ def run_cmd(cmd, live=False, readsize=10):
if p.stdout in rfd:
dat = os.read(p.stdout.fileno(), readsize)
if live:
sys.stdout.write(dat)
# On python3, stdout has a codec to go from text type to bytes
if PY3:
sys.stdout.buffer.write(dat)
else:
sys.stdout.write(dat)
stdout += dat
if dat == b'':
rpipes.remove(p.stdout)
@ -59,7 +63,11 @@ def run_cmd(cmd, live=False, readsize=10):
dat = os.read(p.stderr.fileno(), readsize)
stderr += dat
if live:
sys.stdout.write(dat)
# On python3, stdout has a codec to go from text type to bytes
if PY3:
sys.stdout.buffer.write(dat)
else:
sys.stdout.write(dat)
if dat == b'':
rpipes.remove(p.stderr)
# only break out if we've emptied the pipes, or there is nothing to

View file

@ -1 +0,0 @@
s/ pull / /