mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-24 03:11:24 -07:00
* Using docstrings conflicts with the standard use of docstrings * PYTHON_OPTIMIZE=2 will omit docstrings. Using docstrings makes future changes to the plugin and module code subject to the requirement that we ensure it won't be run with optimization.
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
# (C) 2012, Michael DeHaan, <michael.dehaan@gmail.com>
|
|
# (c) 2017 Ansible Project
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
from __future__ import (absolute_import, division, print_function)
|
|
__metaclass__ = type
|
|
|
|
DOCUMENTATION = '''
|
|
callback: context_demo
|
|
type: aggregate
|
|
short_description: demo callback that adds play/task context
|
|
description:
|
|
- Displays some play and task context along with normal output
|
|
- This is mostly for demo purposes
|
|
version_added: "2.1"
|
|
requirements:
|
|
- whitelist in configuration
|
|
'''
|
|
|
|
from ansible.plugins.callback import CallbackBase
|
|
|
|
|
|
class CallbackModule(CallbackBase):
|
|
"""
|
|
This is a very trivial example of how any callback function can get at play and task objects.
|
|
play will be 'None' for runner invocations, and task will be None for 'setup' invocations.
|
|
"""
|
|
CALLBACK_VERSION = 2.0
|
|
CALLBACK_TYPE = 'aggregate'
|
|
CALLBACK_NAME = 'context_demo'
|
|
CALLBACK_NEEDS_WHITELIST = True
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(CallbackModule, self).__init__(*args, **kwargs)
|
|
self.task = None
|
|
self.play = None
|
|
|
|
def v2_on_any(self, *args, **kwargs):
|
|
self._display.display("--- play: {} task: {} ---".format(getattr(self.play, 'name', None), self.task))
|
|
|
|
self._display.display(" --- ARGS ")
|
|
for i, a in enumerate(args):
|
|
self._display.display(' %s: %s' % (i, a))
|
|
|
|
self._display.display(" --- KWARGS ")
|
|
for k in kwargs:
|
|
self._display.display(' %s: %s' % (k, kwargs[k]))
|
|
|
|
def v2_playbook_on_play_start(self, play):
|
|
self.play = play
|
|
|
|
def v2_playbook_on_task_start(self, task, is_conditional):
|
|
self.task = task
|