From 9a4ad89ec5771f22bfd59e746377f207762e470a Mon Sep 17 00:00:00 2001 From: toshi_pp Date: Sat, 9 Jun 2018 16:49:29 +0900 Subject: [PATCH] Fix a process execution using lxc connection plugin on Python3. python2-lxc module needs bytes, on the other hand python3-lxc requires text. To solve such incompatibility, use to_native other than to_bytes. This fixes #41060. --- lib/ansible/plugins/connection/lxc.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/ansible/plugins/connection/lxc.py b/lib/ansible/plugins/connection/lxc.py index 5219b28d68..0c623ab534 100644 --- a/lib/ansible/plugins/connection/lxc.py +++ b/lib/ansible/plugins/connection/lxc.py @@ -45,7 +45,7 @@ except ImportError: from ansible import constants as C from ansible import errors -from ansible.module_utils._text import to_bytes +from ansible.module_utils._text import to_bytes, to_native from ansible.plugins.connection import ConnectionBase @@ -116,8 +116,9 @@ class Connection(ConnectionBase): ''' run a command on the chroot ''' super(Connection, self).exec_command(cmd, in_data=in_data, sudoable=sudoable) - executable = to_bytes(self._play_context.executable, errors='surrogate_or_strict') - local_cmd = [executable, '-c', to_bytes(cmd, errors='surrogate_or_strict')] + # python2-lxc needs bytes. python3-lxc needs text. + executable = to_native(self._play_context.executable, errors='surrogate_or_strict') + local_cmd = [executable, '-c', to_native(cmd, errors='surrogate_or_strict')] read_stdout, write_stdout = None, None read_stderr, write_stderr = None, None