X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-replicated;h=7aa8b893e144c769d3ebabc4186dde4b897ca446;hb=665a6fd0f268c636c14dba8af8ec91afe0658bcd;hp=f38eba4070f3d88b19305c3c627e51e472ccf181;hpb=ef2d9063c21b0e7d6b7ba332a6e86964f541f825;p=mirror%2Fuserdir-ldap.git diff --git a/ud-replicated b/ud-replicated index f38eba4..7aa8b89 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 @@ -63,14 +65,31 @@ FORMAT='%(asctime)s ud-replicated: %(levelname)s %(message)s' SFORMAT='ud-replicated[%(process)s]: %(message)s' logging.basicConfig(format=FORMAT, level=lvl) LOG = logging.getLogger(__name__) -syslog_handler = logging.handlers.SysLogHandler(address = '/dev/log') +logsock = '/dev/log' +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) syslog_handler.setFormatter(formatter) LOG.addHandler(syslog_handler) +last_run = 0 + def do_replicate(message): - last_update = time.time() - LOG.debug("Got message at %s" % last_update) + 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: + return command = ['/usr/bin/ud-replicate'] if options.dryrun: @@ -86,7 +105,7 @@ def do_replicate(message): LOG.debug('%s finished with ret: 0' % ' '.join(command)) finally: os.environ['TERM'] = old_term - LOG.debug(message) + last_run = last_update def main(): conn = Connection(conf=mq_conf) @@ -107,5 +126,7 @@ def main(): sys.exit(0) if __name__ == '__main__': - do_replicate('startup complete') + do_replicate(json.dumps( + {'timestamp': time.time(), + 'message': 'startup complete'})) main()