1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 """
17 Action slass for pulp agent.
18 """
19
20 from datetime import datetime as dt
21 from datetime import timedelta
22 from logging import getLogger
23
24 log = getLogger(__name__)
25
26
27
32 return decorator
33
34
36 """
37 Abstract recurring action (base).
38 @keyword interval: The run interval.
39 One of:
40 - days
41 - seconds
42 - minutes
43 - hours
44 - weeks
45 @ivar last: The last run timestamp.
46 @type last: datetime
47 """
48
49 actions = []
50
52 """
53 @param interval: The run interval (minutes).
54 @type interval: timedelta
55 """
56 for k,v in interval.items():
57 interval[k] = int(v)
58 self.interval = timedelta(**interval)
59 self.last = dt(1900, 1, 1)
60
67
69 """
70 Get action name. Default to class name.
71 @return: The action name.
72 @rtype: str
73 """
74 return self.__class__.__name__
75
77 try:
78 next = self.last+self.interval
79 now = dt.utcnow()
80 if next < now:
81 self.last = now
82 log.info('perform "%s"', self.name())
83 self.perform()
84 except Exception, e:
85 log.exception(e)
86