#!/usr/bin/env python
import argparse
import subprocess
from contextlib import closing
from sys import exit

import psycopg2


def is_master():
    dsn = 'dbname=postgres user=monitor connect_timeout=1 host=localhost'
    with closing(psycopg2.connect(dsn)) as conn:
        cur = conn.cursor()
        cur.execute('select pg_is_in_recovery() as replica;')
        return not cur.fetchone()[0]


def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--dry-run',
                        help='Perform switchover if current host is primary',
                        action='store_true')
    return parser.parse_args()


if __name__ == '__main__':
    args = get_args()
    if not is_master():
        print('NO')
        exit(0)

    print('YES')
    if not args.dry_run:
        print('Perform switchover')
        print(
            subprocess.check_output(
                'pgsync-util switchover -y -t 600 -b'.split(),
                stderr=subprocess.STDOUT
            )
        )
