Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

# (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: {0} task: {1} ---".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