]> git.parisson.com Git - telecaster-server.git/commitdiff
rn, avoid first log
authorGuillaume Pellerin <yomguy@parisson.com>
Mon, 13 Jan 2014 13:33:41 +0000 (14:33 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Mon, 13 Jan 2014 13:33:41 +0000 (14:33 +0100)
tcserver/conf/usr/local/share/telecaster/scripts/monitor_check.py [new file with mode: 0644]

diff --git a/tcserver/conf/usr/local/share/telecaster/scripts/monitor_check.py b/tcserver/conf/usr/local/share/telecaster/scripts/monitor_check.py
new file mode 100644 (file)
index 0000000..a758465
--- /dev/null
@@ -0,0 +1,66 @@
+import sys, time, logging, socket
+from threading import Thread
+from logging.handlers import SMTPHandler
+
+from watchdog.observers import Observer
+from watchdog.events import *
+
+
+IGNORE_PATTERNS = ['*.git/*', '*.swp', '*.swpx', '*~', '*.tmp',]
+HOSTNAME = socket.gethostname()
+
+class EmailLogger(object):
+    """An email logging class"""
+
+    def __init__(self, mailhost, fromaddr, toaddrs, subject):
+        self.logger = logging.getLogger('telecaster')
+        self.hdlr = SMTPHandler(mailhost, fromaddr, toaddrs, subject)
+        self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+        self.hdlr.setFormatter(self.formatter)
+        self.logger.addHandler(self.hdlr)
+        self.logger.setLevel(logging.INFO)
+
+
+class ActivityEventHandler(PatternMatchingEventHandler):
+
+    activity = True
+
+    def on_modified(self, event):
+        super(ActivityEventHandler, self).on_modified(event)
+        self.activity = True
+
+
+class ActivityCheck(Thread):
+
+    def __init__(self, period, path, mailhost, fromaddr, toaddrs):
+        Thread.__init__(self)
+        self.period = int(period)
+        self.path = path
+        self.activity = False
+        self.subject = HOSTNAME + ' : ' + 'telecaster monitor activity'
+        self.logger = EmailLogger(mailhost, fromaddr, toaddrs, self.subject)
+        self.event_handler = ActivityEventHandler(ignore_patterns=IGNORE_PATTERNS)
+        self.observer = Observer()
+        self.observer.schedule(self.event_handler, path, recursive=True)
+        self.observer.start()
+
+    def run(self):        
+        while True:
+            if not self.event_handler.activity:
+                self.logger.logger.error('The monitor is NOT recording anymore!')
+            else:
+                self.event_handler.activity = False
+            time.sleep(self.period)
+
+    def stop(self):
+        self.observer.stop()
+
+if __name__ == "__main__":
+    period = sys.argv[1]
+    path = sys.argv[2]
+    mailhost = sys.argv[3]
+    fromaddr = sys.argv[4]
+    toaddrs = sys.argv[5].split(',')
+    check = ActivityCheck(period, path, mailhost, fromaddr, toaddrs)
+    check.start()
+    check.join()