def main(): get_env('INFRABOX_SERVICE') get_env('INFRABOX_VERSION') get_env('INFRABOX_DATABASE_DB') get_env('INFRABOX_DATABASE_USER') get_env('INFRABOX_DATABASE_PASSWORD') get_env('INFRABOX_DATABASE_HOST') get_env('INFRABOX_DATABASE_PORT') get_env('INFRABOX_GERRIT_PORT') get_env('INFRABOX_GERRIT_HOSTNAME') get_env('INFRABOX_GERRIT_USERNAME') get_env('INFRABOX_GERRIT_KEY_FILENAME') get_env('INFRABOX_ROOT_URL') conn = connect_db() conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) logger.info("Connected to database") elect_leader(conn, "gerrit-review") curs = conn.cursor() curs.execute("LISTEN job_update;") logger.info("Waiting for job updates") while True: is_leader(conn, "gerrit-review") if select.select([conn], [], [], 5) != ([], [], []): conn.poll() while conn.notifies: notify = conn.notifies.pop(0) logger.info(notify.payload) handle_job_update(conn, json.loads(notify.payload))
def run(self): daemon_json_path = '/etc/docker/daemon.json' if not os.path.exists(daemon_json_path): self.logger.error('%s does not exist', daemon_json_path) sys.exit(1) with open(daemon_json_path) as daemon_json: self.daemon_json = str(daemon_json.read()) while True: is_leader(self.conn, "scheduler") self.handle() time.sleep(2)
def main(): # pragma: no cover get_env('INFRABOX_VERSION') get_env('INFRABOX_DATABASE_DB') get_env('INFRABOX_DATABASE_USER') get_env('INFRABOX_DATABASE_PASSWORD') get_env('INFRABOX_DATABASE_HOST') get_env('INFRABOX_DATABASE_PORT') cluster_name = get_env('INFRABOX_CLUSTER_NAME') conn = connect_db() conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) logger.info("Connected to database") elect_leader(conn, 'github-review', cluster_name) curs = conn.cursor() curs.execute("LISTEN job_update;") logger.info("Waiting for job updates") while True: if select.select([conn], [], [], 5) != ([], [], []): conn.poll() while conn.notifies: notify = conn.notifies.pop(0) if not is_leader( conn, 'github-review', cluster_name, exit=False): continue handle_job_update(conn, json.loads(notify.payload))
def main(): # pragma: no cover get_env('INFRABOX_VERSION') get_env('INFRABOX_DATABASE_DB') get_env('INFRABOX_DATABASE_USER') get_env('INFRABOX_DATABASE_PASSWORD') get_env('INFRABOX_DATABASE_HOST') get_env('INFRABOX_DATABASE_PORT') cluster_name = get_env('INFRABOX_CLUSTER_NAME') conn = connect_db() conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) logger.info("Connected to database") elect_leader(conn, 'github-review', cluster_name) curs = conn.cursor() curs.execute("LISTEN job_update;") logger.info("Waiting for job updates") pool = eventlet.GreenPool() while True: trampoline(conn, read=True) conn.poll() while conn.notifies: notify = conn.notifies.pop(0) event = json.loads(notify.payload) if not is_leader(conn, 'github-review', cluster_name, exit=False): logger.info("skip job: %s because I'm not leader", event.get('job_id')) continue pool.spawn_n(handle, event)
def main(): get_env('INFRABOX_VERSION') get_env('INFRABOX_DATABASE_DB') get_env('INFRABOX_DATABASE_USER') get_env('INFRABOX_DATABASE_PASSWORD') get_env('INFRABOX_DATABASE_HOST') get_env('INFRABOX_DATABASE_PORT') get_env('INFRABOX_GERRIT_PORT') get_env('INFRABOX_GERRIT_HOSTNAME') get_env('INFRABOX_GERRIT_USERNAME') get_env('INFRABOX_GERRIT_KEY_FILENAME') cluster_name = get_env('INFRABOX_CLUSTER_NAME') conn = connect_db() conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) logger.info("Connected to database") elect_leader(conn, 'gerrit-review', cluster_name) curs = conn.cursor() curs.execute("LISTEN job_update;") logger.info("Waiting for job updates") while True: if not is_active(conn, cluster_name): logger.info("cluster is inactive or disabled, sleeping") time.sleep(5) continue is_leader(conn, 'gerrit-review', cluster_name) curs.execute('commit;') while conn.notifies: notify = conn.notifies.pop(0) logger.debug("got notify: %s" % notify.payload) handle_job_update(conn, json.loads(notify.payload)) time.sleep(3)