Ansible Tower - Mail callback plugin - Not sending emails correctly

Hello all,

I am probably missing something here. I’m trying to get this mail plugin working - https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/callback/mail.py

If I edit the script by adding mail() to the end, I receive a basic email immediately with no information when I run a job template (I believe this is expected).

The problem is I never receive a summary email when the job is complete. My assumption is this is supposed to wait around until the job is completed, then send an email. As expected, I never receive an email at all if I remove the mail() command I appended to the mail.py script.

Does anyone have any insight in getting this to work?

What you want to do is add a def v2_playbook_on_stats(self, stats): method, and put your summary emailing in there.

Wow that helped a bunch and clears up a bunch of questions I didn’t even know I had. Thanks!

Hmmm, it appears to still not be working.

I added that function with the mail() call I was using beforehand. No dice. If I move that call to the bottom of the script, it sends the email. It behaves as if none of the Callback functions are working. This also applies to the hipchat.py plugin I’ve been trying.

I also I tried creating both a ‘v2_playbook_on_stats’ and ‘playbook_on_stats’ which didn’t change anything.

Are you running v2? (Guessing so by @sivel’s suggestion.) Did you whitelist your callback in your config?

That fixed it! I had:

bin_ansible_callbacks = true

I also needed to add:

callback_whitelist = mail

Also, not 100% sure on this - It appears hipchat.py needs to be updated to v2. https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/callback/hipchat.py
I tried whitelisting it as well, but received the following error message:

ERROR! Unexpected Exception: ‘CallbackModule’ object has no attribute ‘display’ the full traceback was: Traceback (most recent call last): File “/usr/bin/ansible-playbook”, line 86, in sys.exit(cli.run()) File “/usr/lib/pymodules/python2.7/ansible/cli/playbook.py”, line 150, in run results = pbex.run() File “/usr/lib/pymodules/python2.7/ansible/executor/playbook_executor.py”, line 79, in run self._tqm.load_callbacks() File “/usr/lib/pymodules/python2.7/ansible/executor/task_queue_manager.py”, line 173, in load_callbacks self._callback_plugins.append(callback_plugin()) File “/usr/lib/pymodules/python2.7/ansible/plugins/callback/hipchat.py”, line 70, in init self.display.warning('HipChat token could not be loaded. The HipChat ’ AttributeError: ‘CallbackModule’ object has no attribute ‘display’

I remember someone else ran into this with another plugin and it needed to be updated to v2 functions.

As far as hipchat, you are correct. It was not fully updated for 2.0 and is not compatible at this time.

You should really not need to whitelist it unless it is shipped with ansible, only those modules have CALLBACK_NEEDS_WHITELIST = True​, any custom modules should not have that setting unless you explicitly want to force people to whitelist them for them to work.