mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Some attributes of callbacks aren't in v2. Port plugins to the v2 way to do that
Update porting guide with info on callback porting
This commit is contained in:
parent
fb57818ea3
commit
9e3932ffca
3 changed files with 47 additions and 2 deletions
|
@ -168,7 +168,33 @@ Action plugins
|
||||||
Callback plugins
|
Callback plugins
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* callback plugins
|
Although Ansible 2.0 provides a new callback API the old one continues to work
|
||||||
|
for most callback plugins. However, if your callback plugin makes use of
|
||||||
|
:attr:`self.playbook`, :attr:`self.play`, or :attr:`self.task` then you will
|
||||||
|
have to store the values for these yourself as ansible no longer automatically
|
||||||
|
populates the callback with them. Here's a short snippet that shows you how::
|
||||||
|
|
||||||
|
from ansible.plugins.callback import CallbackBase
|
||||||
|
|
||||||
|
class CallbackModule(CallbackBase):
|
||||||
|
def __init__(self):
|
||||||
|
self.playbook = None
|
||||||
|
self.play = None
|
||||||
|
self.task = None
|
||||||
|
|
||||||
|
def v2_playbook_on_start(self, playbook):
|
||||||
|
self.playbook = playbook
|
||||||
|
|
||||||
|
def v2_playbook_on_play_start(self, play):
|
||||||
|
self.play = play
|
||||||
|
|
||||||
|
def v2_playbook_on_task_start(self, task, is_conditional):
|
||||||
|
self.task = task
|
||||||
|
|
||||||
|
def v2_on_any(self, *args, **kwargs):
|
||||||
|
self._display.display('%s: %s: %s' % (self.playbook.name,
|
||||||
|
self.play.name, self.task))
|
||||||
|
|
||||||
|
|
||||||
Connection plugins
|
Connection plugins
|
||||||
------------------
|
------------------
|
||||||
|
|
|
@ -31,8 +31,18 @@ class CallbackModule(CallbackBase):
|
||||||
CALLBACK_NAME = 'context_demo'
|
CALLBACK_NAME = 'context_demo'
|
||||||
CALLBACK_NEEDS_WHITELIST = True
|
CALLBACK_NEEDS_WHITELIST = True
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.task = None
|
||||||
|
self.play = None
|
||||||
|
|
||||||
def v2_on_any(self, *args, **kwargs):
|
def v2_on_any(self, *args, **kwargs):
|
||||||
i = 0
|
i = 0
|
||||||
|
if self.play:
|
||||||
|
play_str = 'play: %s' % self.play.name
|
||||||
|
if self.task:
|
||||||
|
task_str = 'task: %s' % self.task
|
||||||
|
self._display.display("--- %s %s ---" % (self.play_str, self.task_str))
|
||||||
|
|
||||||
self._display.display(" --- ARGS ")
|
self._display.display(" --- ARGS ")
|
||||||
for a in args:
|
for a in args:
|
||||||
self._display.display(' %s: %s' % (i, a))
|
self._display.display(' %s: %s' % (i, a))
|
||||||
|
@ -41,3 +51,9 @@ class CallbackModule(CallbackBase):
|
||||||
self._display.display(" --- KWARGS ")
|
self._display.display(" --- KWARGS ")
|
||||||
for k in kwargs:
|
for k in kwargs:
|
||||||
self._display.display(' %s: %s' % (k, kwargs[k]))
|
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
|
||||||
|
|
|
@ -73,6 +73,7 @@ class CallbackModule(CallbackBase):
|
||||||
|
|
||||||
self.printed_playbook = False
|
self.printed_playbook = False
|
||||||
self.playbook_name = None
|
self.playbook_name = None
|
||||||
|
self.play = None
|
||||||
|
|
||||||
def send_msg(self, msg, msg_format='text', color='yellow', notify=False):
|
def send_msg(self, msg, msg_format='text', color='yellow', notify=False):
|
||||||
"""Method for sending a message to HipChat"""
|
"""Method for sending a message to HipChat"""
|
||||||
|
@ -93,9 +94,11 @@ class CallbackModule(CallbackBase):
|
||||||
self.display.warning('Could not submit message to hipchat')
|
self.display.warning('Could not submit message to hipchat')
|
||||||
|
|
||||||
|
|
||||||
def playbook_on_play_start(self, name):
|
def v2_playbook_on_play_start(self, play):
|
||||||
"""Display Playbook and play start messages"""
|
"""Display Playbook and play start messages"""
|
||||||
|
|
||||||
|
self.play = play
|
||||||
|
name = play.name
|
||||||
# This block sends information about a playbook when it starts
|
# This block sends information about a playbook when it starts
|
||||||
# The playbook object is not immediately available at
|
# The playbook object is not immediately available at
|
||||||
# playbook_on_start so we grab it via the play
|
# playbook_on_start so we grab it via the play
|
||||||
|
|
Loading…
Reference in a new issue