forked from NTIA/scos-sensor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
base.py
35 lines (26 loc) · 1.13 KB
/
base.py
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
class Action(object):
"""The action base class.
To create an action, create a subclass of `Action` with a descriptive
docstring and override the `__call__` method.
The scheduler reports the 'success' or 'failure' of an action by the
following convention:
* If at any point or for any reason that `__call__` function raises an
exception, the task is marked a 'failure' and `str(err)` is provided
as a detail to the user, where `err` is the raised Exception object.
* If the `__call__` function returns normally, the task was a 'success',
and if the value returned to the scheduler is a string, it will be
added to the task result's detail field.
"""
def __init__(self, admin_only=False):
self.admin_only = admin_only
def __call__(self, schedule_entry_name, task_id):
raise NotImplementedError("Implement action logic.")
@property
def summary(self):
try:
return self.description.splitlines()[0]
except IndexError:
return "Summary not provided."
@property
def description(self):
return self.__doc__