def run(self): '''daemon main logic''' while True: enabled_crits_sites = list() enabled_edge_sites = list() for c_site in self.config['crits']['sites'].keys(): if self.config['crits']['sites'][c_site]['enabled']: enabled_crits_sites.append(c_site) for e_site in self.config['edge']['sites'].keys(): if self.config['edge']['sites'][e_site]['enabled']: enabled_edge_sites.append(e_site) # sync crits to edge for c_site in enabled_crits_sites: for e_site in enabled_edge_sites: # check if (and when) we synced src and dest... now = nowutc() last_run = self.db.get_last_sync(src=c_site, dest=e_site, direction='c2e') last_run = last_run.replace(tzinfo=pytz.utc) poll_interval = self.get_poll_interval(c_site) if now >= \ last_run + datetime.timedelta(seconds=poll_interval): self.logger.info('initiating crits=>edge sync between ' '%s and %s' % (c_site, e_site)) completed_run = crits_.crits2edge(self.config, c_site, e_site, daemon=True, now=now, last_run=last_run) if completed_run: self.db.set_last_sync(src=c_site, dest=e_site, direction='c2e', timestamp=completed_run) # sync edge to crits for e_site in enabled_edge_sites: for c_site in enabled_crits_sites: now = nowutc() last_run = self.db.get_last_sync(src=e_site, dest=c_site, direction='e2c') last_run = last_run.replace(tzinfo=pytz.utc) poll_interval = self.get_poll_interval(e_site) if now >= \ last_run + datetime.timedelta(seconds=poll_interval): self.logger.info('initiating edge=>crits sync between ' '%s and %s' % (e_site, c_site)) completed_run = edge_.edge2crits(self.config, e_site, c_site, daemon=True, now=now, last_run=last_run) if completed_run: self.db.set_last_sync(src=e_site, dest=c_site, direction='e2c', timestamp=completed_run) time.sleep(1)
def main(): args = docopt(__doc__, version=__version__) config = util_.parse_config(args['--config']) config['config_file'] = args['--config'] logger = log_.setup_logging(config) config['logger'] = logger db = db_.DB(config) config['db'] = db config['daemon']['app_path'] = app_path if args['--c2e']: if args['--src'] in config['crits']['sites'].keys() \ and args['--dest'] in config['edge']['sites'].keys(): logger.info('initiating crits=>edge sync between %s and %s' % (args['--src'], args['--dest'])) crits2edge(config, args['--src'], args['--dest']) elif args['--e2c']: if args['--src'] in config['edge']['sites'].keys() and \ args['--dest'] in config['crits']['sites'].keys(): logger.info('initiating edge=>crits sync between %s and %s' % (args['--src'], args['--dest'])) edge2crits(config, args['--src'], args['--dest'])