#!/usr/bin/env python2
import logging
import sys
import time

import click
import cx_Oracle

log = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def db_is_migrated(dsn, user, password):
    try:
        conn = cx_Oracle.connect(dsn=dsn, user=user, password=password)
        cur = conn.cursor()
        cur.execute("select count(*) from databasechangelog where id = 'migration_footer'")
        row = cur.fetchone()
        return row[0] == 1
    except cx_Oracle.DatabaseError as e:
        log.info('DB is not ready')
        log.debug(e)
        return False


@click.command()
@click.option('--user')
@click.option('--password')
@click.option('--dsn')
@click.option('--wait-sec', default=600)
def main(dsn, user, password, wait_sec, retry_sec=5):
    for i in range(0, wait_sec, retry_sec):
        if db_is_migrated(dsn=dsn, user=user, password=password):
            sys.exit(0)
        time.sleep(retry_sec)

    log.error('Could not wait for DB to be up')
    sys.exit(1)


if __name__ == '__main__':
    main()
