#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Получает и обновляет данные о текущем хосте из ppcinv-zk
"""

import argparse
import sys
sys.path.extend(['share/pyshared', '/usr/local/share/pyshared'])

import time

from ppcinv.delivery import PPCInvDelivery
from ppcinv.helpers import init_root_logger, flock_nb

if __name__ == '__main__':
    parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description=__doc__)
    parser.add_argument('--zk-hosts', type=str, required=True, help='Comma separated zookeeper hosts list')
    parser.add_argument('--fqdn', type=str, required=True, help='Fqdn to fetch ppcinv metadata')
    parser.add_argument('--store-to', type=str, required=True, help='Path to file with resulting metadata')
    parser.add_argument('--log-level', type=str, required=False, choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], default='ERROR', help='Logging level')
    parser.add_argument('--log-file', type=str, required=False, default=None, help='Log file')
    parser.add_argument('--lock-file', type=str, required=False, default='/var/lock/ppcinv-delivery.lock', help='Lock file')
    args = parser.parse_args()

    logger = init_root_logger(args)

    try:
        with open(args.lock_file, 'w') as f, flock_nb(f):
            ppcinv_delivery = PPCInvDelivery(args.zk_hosts, args.fqdn, args.store_to)
            ppcinv_delivery.run()
    except Exception as e:
        logger.critical('Delivery exception: %s - %s' % (type(e), e))

    time.sleep(1)
