diff --git a/SAS/OTDB_Services/TreeStatusEvents.py b/SAS/OTDB_Services/TreeStatusEvents.py index b6e176bee8ccff26d07df575c407bf480f0c44ef..77ce52df36c0b9a5540151f9c60aae9e4b3bc996 100755 --- a/SAS/OTDB_Services/TreeStatusEvents.py +++ b/SAS/OTDB_Services/TreeStatusEvents.py @@ -24,6 +24,8 @@ Daemon that watches the OTDB database for status changes of trees and publishes those on the messagebus. """ +import os +import os.path import sys, time, pg, datetime import logging from lofar.messaging import EventMessage, ToBus @@ -122,7 +124,8 @@ if __name__ == "__main__": if connected: # Get start_time (= creation time of last retrieved record if any) try: - with open('.treestatusevent', 'r') as f: + treestatuseventfilename = os.path.expanduser('~/.lofar/otdb_treestatusevent_state') + with open(treestatuseventfilename, 'r') as f: line = f.readline() if line.rfind('.') > 0: start_time = datetime.datetime.strptime(line, "%Y-%m-%d %H:%M:%S.%f") @@ -130,7 +133,19 @@ if __name__ == "__main__": start_time = datetime.datetime.strptime(line, "%Y-%m-%d %H:%M:%S") except Exception as e: logger.warning(e) - start_time = datetime.datetime(2015, 1, 1) + # start scanning from events since 'now' + # this timestamp will be stored in the treestatuseventfilename file + start_time = datetime.datetime.utcnow() + + try: + logger.info("creating %s" % (treestatuseventfilename,)) + if not os.path.exists(os.path.dirname(treestatuseventfilename)): + os.mkdirs(os.path.dirname(treestatuseventfilename)) + + with open(treestatuseventfilename, 'w') as f: + f.write(start_time.strftime("%Y-%m-%d %H:%M:%S")) + except Exception as e: + logger.error(e) try: logger.info("start_time=%s, polling database" % (start_time,)) @@ -145,8 +160,11 @@ if __name__ == "__main__": logger.info("new start_time:=%s" % (creation,)) - with open('.treestatusevent', 'w') as f: - f.write(creation) + try: + with open(treestatuseventfilename, 'w') as f: + f.write(creation) + except Exception as e: + logger.error(e) except FunctionError, exc_info: logger.error(exc_info) except Exception as e: