X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fuserdir-ldap.git;a=blobdiff_plain;f=ud-replicated;h=dd58a24ea5eeb803951635b19cd08940a34939fc;hp=1efbceadaff1e1ec332407ae6f408d540cdf63eb;hb=HEAD;hpb=4b9512d193353298e8d85e6781308dfb2f40d0cd diff --git a/ud-replicated b/ud-replicated index 1efbcea..dd58a24 100755 --- a/ud-replicated +++ b/ud-replicated @@ -25,11 +25,13 @@ from dsa_mq.connection import Connection from dsa_mq.config import Config +import json import logging import logging.handlers import optparse import os import platform +import stat import subprocess import sys import time @@ -64,7 +66,7 @@ SFORMAT='ud-replicated[%(process)s]: %(message)s' logging.basicConfig(format=FORMAT, level=lvl) LOG = logging.getLogger(__name__) logsock = '/dev/log' -if os.path.exists('/var/run/log'): # Kfreebsd randomly different +if os.path.exists('/var/run/log') and stat.S_ISSOCK(os.stat('/var/run/log').st_mode): # Kfreebsd randomly different logsock = '/var/run/log' syslog_handler = logging.handlers.SysLogHandler(address = logsock) formatter = logging.Formatter(SFORMAT) @@ -77,12 +79,16 @@ def do_replicate(message): global last_run last_update = int(time.time()) timestamp = last_update + try: + message = json.loads(message) + except ValueError: + pass if isinstance(message, dict): timestamp = message.get('timestamp', last_update) message = message.get('message', 'update required') LOG.debug("Got message at %s: %s" % (last_update, message)) - if last_run > timestamp, last_update): + if last_run > timestamp: return command = ['/usr/bin/ud-replicate'] @@ -98,7 +104,8 @@ def do_replicate(message): else: LOG.debug('%s finished with ret: 0' % ' '.join(command)) finally: - os.environ['TERM'] = old_term + if old_term is not None: + os.environ['TERM'] = old_term last_run = last_update def main(): @@ -120,7 +127,7 @@ def main(): sys.exit(0) if __name__ == '__main__': - do_replicate( + do_replicate(json.dumps( {'timestamp': time.time(), - 'message': 'startup complete'}) + 'message': 'startup complete'})) main()