mysqloperator/operator_main.py (31 lines of code) (raw):
# Copyright (c) 2020, 2021, Oracle and/or its affiliates.
#
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
#
from .controller import config as myconfig
import mysqlsh
import asyncio
import kopf
import os
import time
import logging
# this will register operator event handlers
from .controller import operator
from .controller import k8sobject
from .controller.kubeutils import k8s_cluster_domain
k8sobject.g_component = "operator"
k8sobject.g_host = os.getenv("HOSTNAME")
def main(argv):
mysqlsh.globals.shell.options.useWizards = False
# https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-application-log.html
mysqlsh.globals.shell.options.logLevel = 4 # warning
mysqlsh.globals.shell.options.verbose = 0
myconfig.config_from_env()
kopf.configure(verbose=True if myconfig.debug >= 1 else False)
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - [%(levelname)s] [%(name)s] %(message)s',
datefmt="%Y-%m-%dT%H:%M:%S")
# populate cached value
k8s_cluster_domain(logging)
loop = asyncio.get_event_loop()
# Priority defines the priority/weight of this instance of the operator for
# kopf peering. If there are multiple operator instances in the cluster,
# only the one with the highest priority will actually be active.
loop.run_until_complete(kopf.operator(
clusterwide=True,
priority=int(time.time()*1000000),
peering_name="mysql-operator" # must be the same as the identified in ClusterKopfPeering
))
return 0
if __name__ == "__main__":
main([])