diff --git a/changelogs/fragments/py3-pull.yaml b/changelogs/fragments/py3-pull.yaml new file mode 100644 index 00000000000000..994810bfea7b8a --- /dev/null +++ b/changelogs/fragments/py3-pull.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - ansible-pull - fixed a bug checking for changes when we've pulled from the git repository on python3 https://github.com/ansible/ansible/issues/36962 diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py index 1709da4ae82332..832be72e317706 100644 --- a/lib/ansible/cli/pull.py +++ b/lib/ansible/cli/pull.py @@ -30,7 +30,7 @@ from ansible.cli import CLI from ansible.errors import AnsibleOptionsError -from ansible.module_utils._text import to_native +from ansible.module_utils._text import to_native, to_text from ansible.plugins.loader import module_loader from ansible.utils.cmd_functions import run_cmd @@ -238,14 +238,14 @@ def run(self): # RUN the Checkout command display.debug("running ansible with VCS module to checkout repo") display.vvvv('EXEC: %s' % cmd) - rc, out, err = run_cmd(cmd, live=True) + rc, b_out, b_err = run_cmd(cmd, live=True) if rc != 0: if self.options.force: display.warning("Unable to update repository. Continuing with (forced) run of playbook.") else: return rc - elif self.options.ifchanged and '"changed": true' not in out: + elif self.options.ifchanged and b'"changed": true' not in b_out: display.display("Repository has not changed, quitting.") return 0 @@ -287,14 +287,14 @@ def run(self): # RUN THE PLAYBOOK COMMAND display.debug("running ansible-playbook to do actual work") display.debug('EXEC: %s' % cmd) - rc, out, err = run_cmd(cmd, live=True) + rc, b_out, b_err = run_cmd(cmd, live=True) if self.options.purge: os.chdir('/') try: shutil.rmtree(self.options.dest) except Exception as e: - display.error("Failed to remove %s: %s" % (self.options.dest, str(e))) + display.error(u"Failed to remove %s: %s" % (self.options.dest, to_text(e))) return rc