import logging import time import features from app import app, authentication from data.users.teamsync import sync_teams_to_groups from workers.worker import Worker from util.timedeltastring import convert_to_timedelta from util.log import logfile_path logger = logging.getLogger(__name__) WORKER_FREQUENCY = app.config.get('TEAM_SYNC_WORKER_FREQUENCY', 60) STALE_CUTOFF = convert_to_timedelta(app.config.get('TEAM_RESYNC_STALE_TIME', '30m')) class TeamSynchronizationWorker(Worker): """ Worker which synchronizes teams with their backing groups in LDAP/Keystone/etc. """ def __init__(self): super(TeamSynchronizationWorker, self).__init__() self.add_operation(self._sync_teams_to_groups, WORKER_FREQUENCY) def _sync_teams_to_groups(self): sync_teams_to_groups(authentication, STALE_CUTOFF) def main(): logging.config.fileConfig(logfile_path(debug=False), disable_existing_loggers=False) if not features.TEAM_SYNCING or not authentication.federated_service: logger.debug('Team syncing is disabled; sleeping') while True: time.sleep(100000) worker = TeamSynchronizationWorker() worker.start() if __name__ == "__main__": main()