diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2013-05-29 10:44:30 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2013-05-29 10:44:30 -0400 |
commit | c970cf92b878e9d7912b5fa2f9916b59a739041f (patch) | |
tree | 1a8c4275806c2263d1391f68e9b9f69721a4dab4 /ipsutils/task.py | |
parent | 682da9e3da45278d6298e31808613a4a01963d5e (diff) | |
download | ipsutils-c970cf92b878e9d7912b5fa2f9916b59a739041f.tar.gz |
Exception handling, general base class enhancement
Diffstat (limited to 'ipsutils/task.py')
-rw-r--r-- | ipsutils/task.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/ipsutils/task.py b/ipsutils/task.py index 407eac9..1dfe188 100644 --- a/ipsutils/task.py +++ b/ipsutils/task.py @@ -13,6 +13,9 @@ # You should have received a copy of the GNU General Public License # along with ipsutils. If not, see <http://www.gnu.org/licenses/>. +class TaskException(Exception): + pass + class TaskController(object): def __init__(self): self.stack = [] @@ -37,6 +40,34 @@ class TaskController(object): print("exit: {0:d}".format(status)) exit(status) +class Task(object): + def __init__(self, *args, **kwargs): + self.name = '' + if 'name' in kwargs: + self.name = kwargs['name'] + + if 'func' in kwargs: + self.func = kwargs['func'] + else: + self.func = None + + if 'cls' in kwargs: + self.cls = kwargs['cls'] + else: + self.cls = object() + + def run(self): + if not self.name: + raise TaskException("Unnamed task in: {}".format(self.__class__.__name__)) + + print("+ Running task: {0:s}".format(self.name)) + status = self.task() + return status + + def task(self): + raise NotImplementedError('Task undefined') + + class NamedTask(object): def __init__(self, name, func, *args): |