from __future__ import (absolute_import, division, print_function) __metaclass__ = type from ansible.plugins.callback import CallbackBase from ansible import constants as C from ansible.utils.color import colorize, hostcolor from ansible.utils.display import Display import os class CallbackModule(CallbackBase): CALLBACK_VERSION = 2.0 CALLBACK_TYPE = 'notification' CALLBACK_NAME = 'job_status' def __init__(self, *args, **kwargs): super(CallbackModule, self).__init__() def v2_playbook_on_start(self, playbook): self._display.display(self.CALLBACK_NAME, color=C.COLOR_OK) self._display.display("Custom commands for go here", color=C.COLOR_OK) def v2_playbook_on_play_start(self,play): self._display.display("Custom commands for go here", color=C.COLOR_OK) # Setup and use extra_vars from custom credential: vm = play.get_variable_manager() extra_vars = vm.extra_vars self.job_status_url = extra_vars['job_status_url'] self.job_status_token = extra_vars['job_status_token'] self.callbacks_enabled = extra_vars['callbacks_enabled'] self.im_defined_in_job_template = extra_vars['im_defined_in_job_template'] self.callback_demo_job_id = os.environ['JOB_ID'] self.callback_demo_job_env = dict(os.environ) # self.the_var_manager = vm # self.all_the_vars = extra_vars def v2_playbook_on_task_start(self, task, is_conditional): self._display.display("Custom commands for go here", color=C.COLOR_OK) self._display.display("EXTRA_VAR: job_status_url > %s" % self.job_status_url) self._display.display("EXTRA_VAR: job_status_token > %s" % (self.job_status_token)) self._display.display("EXTRA_VAR: callbacks_enabled > %s" % (self.callbacks_enabled)) def playbook_on_stats(self, stats): self._display.display("", color=C.COLOR_OK) self._display.display("EXTRA_VAR: job_status_url > %s" % self.job_status_url) self._display.display("EXTRA_VAR: job_status_token > %s" % self.job_status_token) self._display.display("EXTRA_VAR: callbacks_enabled > %s" % self.callbacks_enabled) self._display.display("JOB TEMPLATE EXTRA_VAR: im_defined_in_job_template > %s" % self.im_defined_in_job_template) self._display.display("JOB ID from ENV: callback_demo_job_id > %s" % self.callback_demo_job_id) self._display.display("JOB ENVironment: callback_demo_job_env > %s" % self.callback_demo_job_env) # self._display.display("VM: the_var_manager > %s" % self.the_var_manager) # self._display.display("All Vars: all_the_vars > %s" % self.all_the_vars)