diff --git a/lib/ansible/callbacks.py b/lib/ansible/callbacks.py index 8d25333ef2..406a87f37f 100644 --- a/lib/ansible/callbacks.py +++ b/lib/ansible/callbacks.py @@ -20,7 +20,7 @@ import sys import getpass import os import subprocess -import os.path +import random from ansible.color import stringc cowsay = None @@ -37,6 +37,13 @@ elif os.path.exists("/opt/local/bin/cowsay"): # MacPorts path for cowsay cowsay = "/opt/local/bin/cowsay" +noncow = os.getenv("ANSIBLE_COW_SELECTION",None) +if cowsay and noncow == 'random': + cmd = subprocess.Popen([cowsay, "-l"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + (out, err) = cmd.communicate() + cows = out.split() + cows.append(False) + noncow = random.choice(cows) # **************************************************************************** # 1.1 DEV NOTES @@ -135,8 +142,12 @@ def regular_generic_msg(hostname, result, oneline, caption): def banner(msg): if cowsay: - cmd = subprocess.Popen([cowsay, "-W", "60", msg], - stdout=subprocess.PIPE, stderr=subprocess.PIPE) + runcmd = [cowsay,"-W", "60"] + if noncow: + runcmd.append('-f') + runcmd.append(noncow) + runcmd.append(msg) + cmd = subprocess.Popen(runcmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) (out, err) = cmd.communicate() return "%s\n" % out else: