Skip to content

Commit

Permalink
Bkprt py3 pull fix (#37663)
Browse files Browse the repository at this point in the history
* Compare byte strings to byte strings

* Fix a traceback in ansible-pull on python3 comparing output from
  subprocess with a text string.
* Rename variables that hold byte strings so we are clear that those are
  not text strings.
* Use to_text() to transform variable that's being displayed as it's
  less fragile than str().

Fixes #36962

(cherry picked from commit b98ad3a)

* Add changelog entry for python3 ansible-pull fix
  • Loading branch information
abadger authored and nitzmahone committed Mar 29, 2018
1 parent 389c4d1 commit 4ecd16b
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
3 changes: 3 additions & 0 deletions 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
10 changes: 5 additions & 5 deletions lib/ansible/cli/pull.py
Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down

0 comments on commit 4ecd16b

Please sign in to comment.