#!/usr/bin/env python3

"""
实现自动配置 MGR
"""

import os
import sys
import psutil
import logging
import argparse
from dbma.mysqldeploy import MySQLBuildMGR
from dbma.unix.version import DEFAULT_MYSQL_VERSION


def parser_cmd_args():
    """
    实现命令行参数的处理
    """
    name, *_ = os.path.basename(__file__).split('.')
    cores = psutil.cpu_count()

    parser = argparse.ArgumentParser(name)
    parser.add_argument('--port', type=int, default=3306, help="instance port")
    parser.add_argument('--members', type=str,
                        default="192.168.100.10,192.168.100.20,192.168.100.30", help="mgr member list")
    parser.add_argument('--max-mem', type=int,
                        default=128, help="max memory")
    parser.add_argument('--cores', type=int,
                        default=cores, help="cpu cores")
    parser.add_argument('--pkg', type=str, default=DEFAULT_MYSQL_VERSION,
                        help="mysql install package")
    parser.add_argument('--clone-password', type=str,
                        default="dbma@0352", help="the password of clone user")
    parser.add_argument('--repl-password', type=str,
                        default="dbma@0352", help="the password of replication user")
    parser.add_argument('--log', type=str, default='info',
                        choices=['debug', 'info', 'warning', 'error'])
    parser.add_argument('action', choices=['build-mgr'])
    args = parser.parse_args()
    return args


def main():
    # config logger
    args = parser_cmd_args()

    level = getattr(logging, args.log.upper())
    logger = logging.getLogger('dbm-agent')
    logger.setLevel(level)
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(logging.DEBUG)
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(threadName)s - %(levelname)s - %(lineno)s  - %(message)s')
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)

    #
    logger.info("enter build MGR logic")
    builder = MySQLBuildMGR(pkg=args.pkg, port=args.port, members=args.members,
                            max_mem=args.max_mem, cores=args.cores,
                            repl_password=args.repl_password, clone_password=args.clone_password, name="imgr")
    builder.start()
    builder.join()


if __name__ == "__main__":
    main()
