From 3bea3bae59e7404b286b5bf97a6270270bfadd6c Mon Sep 17 00:00:00 2001 From: Tom Ritter Date: Sun, 31 Jan 2016 13:22:08 -0600 Subject: Refactor lots of things to allow you to be notified every so often, instead of every single time. --- jobstate.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 jobstate.py (limited to 'jobstate.py') diff --git a/jobstate.py b/jobstate.py new file mode 100644 index 0000000..4df0de0 --- /dev/null +++ b/jobstate.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python + +import time +import logging +import datetime + +class JobState: + def __init__(self, name): + self.name = name + self.CurrentStateSuccess = True + + def markFailedAndNotify(self): + if self.CurrentStateSuccess: + self.CurrentStateSuccess = False + self.FirstFailureTime = time.time() + self.LastNotifyTime = self.FirstFailureTime + else: + self.LastNotifyTime = time.time() + + def markFailedNoNotify(self): + if self.CurrentStateSuccess: + logging.warn("Somehow we called markFailedNoNotify, on a success condition, without notifying the user") + self.CurrentStateSuccess = False + self.FirstFailureTime = time.time() + self.LastNotifyTime = 0 + else: + pass + + def markSuccessful(self): + if self.CurrentStateSuccess: + pass + else: + self.CurrentStateSuccess = True + self.FirstFailureTime = 0 + self.LastNotifyTime = 0 + + def serialize(self): + ret = self.name + "|" + ret += "Succeeding" if self.CurrentStateSuccess else "Failing" + ret += "|" + str(self.FirstFailureTime) + ret += "|" + str(self.LastNotifyTime) + return ret + + @staticmethod + def Parse(line): + s = JobState() + + line = line.strip() + parts = line.split("|") + + s.name = parts[0] + s.CurrentStateSuccess = True if parts[1] == "Succeeding" else False + s.FirstFailureTime = float(parts[2]) + s.LastNotifyTime = float(parts[3]) + + return s + + @staticmethod + def Empty(name): + s = JobState(name) + return s \ No newline at end of file -- cgit v1.2.3