def main()

in mysqloperator/sidecar_main.py [0:0]


def main(argv):
    global g_cluster_name
    global g_pod_index
    global g_pod_name
    global g_pod_namespace

    # const - when there is an argument without value
    # default - when there is no argument at all
    # nargs = "?" - zero or one arguments
    # nargs = "+" - one or more arguments, returns a list()
    # nargs = 8 - 8 arguments will be consumed
    # nargs = 1 - 1 argument will be consumed, returns a list with one element
    parser = argparse.ArgumentParser(description = "MySQL InnoDB Cluster Instance Sidecar Container")
    parser.add_argument('--debug',  type = int, nargs="?", const = 1, default = 0, help = "Debug")
    parser.add_argument('--logging-level', type = int, nargs="?", default = logging.INFO, help = "Logging Level")
    parser.add_argument('--pod-name', type = str, default = "", help = "Pod Name")
    parser.add_argument('--pod-namespace', type = str, default = "", help = "Pod Namespace")
    parser.add_argument('--datadir', type = str, nargs=1, help = "Path do data directory")
    args = parser.parse_args(argv)

    datadir = args.datadir

    kopf.configure(verbose=True if args.debug != 0 else False)

    mysqlsh.globals.shell.options.useWizards = False
    logging.basicConfig(level=args.logging_level,
                        format='%(asctime)s - [%(levelname)s] [%(name)s] %(message)s',
                        datefmt="%Y-%m-%dT%H:%M:%S")
    logger = logging.getLogger("sidecar")
    utils.log_banner(__file__, logger)

    g_pod_namespace = args.pod_namespace
    g_pod_name = args.pod_name

    name = args.pod_name
    namespace = args.pod_namespace
    pod = MySQLPod.read(name, namespace)
    logger.info(f"My pod is {name} in {namespace}")

    logger.info("Bootstrapping")
    r = bootstrap(pod, datadir, logger)
    if r < 0:
        logger.info(f"Bootstrap error {r}")
        return abs(r)

    cluster = pod.get_cluster()
    cluster.log_tls_info(logger)

    g_cluster_name = cluster.name
    g_pod_index = pod.index

    if r == 0:
        # refresh TLS settings if we're restarting in case something changed
        reconfigure_tls(pod, False if cluster.parsed_spec.tlsUseSelfSigned else True, "main", logger)

    logger.info("Starting Operator request handler...")
    try:
        loop = asyncio.get_event_loop()

        loop.run_until_complete(kopf.operator(namespace=namespace))
    except Exception as e:
        import traceback
        traceback.print_exc()
        logger.critical(f"Unhandled exception while bootstrapping MySQL: {e}")
        # TODO post event to the Pod and the Cluster object if this is the seed
        return 1