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

# (c) 2017 Ansible Project 

# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 

 

# Make coding more python3-ish 

from __future__ import (absolute_import, division, print_function) 

__metaclass__ = type 

 

DOCUMENTATION = ''' 

callback: timer 

callback_type: aggregate 

requirements: 

- whitelist in configuration 

short_description: Adds time to play stats 

version_added: "2.0" 

description: 

- This callback just adds total play duration to the play stats. 

''' 

 

from datetime import datetime 

 

from ansible.plugins.callback import CallbackBase 

 

 

class CallbackModule(CallbackBase): 

""" 

This callback module tells you how long your plays ran for. 

""" 

CALLBACK_VERSION = 2.0 

CALLBACK_TYPE = 'aggregate' 

CALLBACK_NAME = 'timer' 

CALLBACK_NEEDS_WHITELIST = True 

 

def __init__(self): 

 

super(CallbackModule, self).__init__() 

 

self.start_time = datetime.utcnow() 

 

def days_hours_minutes_seconds(self, runtime): 

minutes = (runtime.seconds // 60) % 60 

r_seconds = runtime.seconds % 60 

return runtime.days, runtime.seconds // 3600, minutes, r_seconds 

 

def playbook_on_stats(self, stats): 

self.v2_playbook_on_stats(stats) 

 

def v2_playbook_on_stats(self, stats): 

end_time = datetime.utcnow() 

runtime = end_time - self.start_time 

self._display.display("Playbook run took %s days, %s hours, %s minutes, %s seconds" % (self.days_hours_minutes_seconds(runtime)))