mysqloperator/controller/config.py (75 lines of code) (raw):

# Copyright (c) 2020, 2025, Oracle and/or its affiliates. # # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ # from mysqloperator.controller.api_utils import Edition, ImagePullPolicy from .kubeutils import k8s_version import os import pkg_resources debug = False #enable_mysqld_general_log = False _pull_policy = os.getenv("MYSQL_OPERATOR_IMAGE_PULL_POLICY") if _pull_policy: default_image_pull_policy = ImagePullPolicy[_pull_policy] else: default_image_pull_policy = ImagePullPolicy.Always _edition = os.getenv("MYSQL_OPERATOR_ENTERPRISE") if _edition: OPERATOR_EDITION = Edition.enterprise else: OPERATOR_EDITION = Edition.community # Constants OPERATOR_VERSION = "2.2.4" OPERATOR_EDITION_NAME_TO_ENUM = { edition.value : edition.name for edition in Edition } DEFAULT_VERSION_TAG = "9.3.0" MIN_BASE_SERVER_ID = 1 MAX_BASE_SERVER_ID = 4000000000 SHELL_VERSION = DEFAULT_VERSION_TAG DEFAULT_SERVER_VERSION_TAG = DEFAULT_VERSION_TAG MIN_SUPPORTED_MYSQL_VERSION = "8.0.28" MAX_SUPPORTED_MYSQL_VERSION = DEFAULT_VERSION_TAG DISABLED_MYSQL_VERSION = { "8.0.29": "Support for MySQL 8.0.29 is disabled. Please see https://dev.mysql.com/doc/relnotes/mysql-operator/en/news-8-0-29.html" } DEFAULT_ROUTER_VERSION_TAG = DEFAULT_VERSION_TAG # This is used for the sidecar. The operator version is deploy-operator.yaml DEFAULT_OPERATOR_VERSION_TAG = f"{DEFAULT_VERSION_TAG}-{OPERATOR_VERSION}" DEFAULT_IMAGE_REPOSITORY = os.getenv( "MYSQL_OPERATOR_DEFAULT_REPOSITORY", default="container-registry.oracle.com/mysql").rstrip('/') MYSQL_SERVER_IMAGE = "community-server" MYSQL_ROUTER_IMAGE = "community-router" MYSQL_OPERATOR_IMAGE = "community-operator" MYSQL_SERVER_EE_IMAGE = "enterprise-server" MYSQL_ROUTER_EE_IMAGE = "enterprise-router" MYSQL_OPERATOR_EE_IMAGE = "enterprise-operator" CLUSTER_ADMIN_USER_NAME = "mysqladmin" ROUTER_METADATA_USER_NAME = "mysqlrouter" BACKUP_USER_NAME = "mysqlbackup" def log_config_banner(logger) -> None: logger.info(f"KUBERNETES_VERSION ={k8s_version()}") logger.info(f"OPERATOR_VERSION ={OPERATOR_VERSION}") logger.info(f"OPERATOR_EDITION ={OPERATOR_EDITION.value}") logger.info(f"OPERATOR_EDITIONS ={list(OPERATOR_EDITION_NAME_TO_ENUM)}") logger.info(f"SHELL_VERSION ={SHELL_VERSION}") logger.info(f"DEFAULT_VERSION_TAG={DEFAULT_VERSION_TAG}") logger.info(f"SIDECAR_VERSION_TAG={DEFAULT_OPERATOR_VERSION_TAG}") logger.info(f"DEFAULT_IMAGE_REPOSITORY ={DEFAULT_IMAGE_REPOSITORY}") for dist in pkg_resources.working_set: pkg = str(dist).split(" ") logger.info(f"{pkg[0]:20} = {pkg[1]:10}") def config_from_env() -> None: import mysqlsh global debug # global enable_mysqld_general_log global default_image_pull_policy level = os.getenv("MYSQL_OPERATOR_DEBUG") if level: level = int(level) if level > 0: debug = level # enable_mysqld_general_log = True if level > 4: mysqlsh.globals.shell.options.logLevel = 8 mysqlsh.globals.shell.options.verbose = 3 mysqlsh.globals.shell.options["dba.logSql"] = 2 elif level > 3: mysqlsh.globals.shell.options.logLevel = 7 mysqlsh.globals.shell.options.verbose = 2 mysqlsh.globals.shell.options["dba.logSql"] = 2 elif level > 1: mysqlsh.globals.shell.options.logLevel = 7 mysqlsh.globals.shell.options.verbose = 1 mysqlsh.globals.shell.options["dba.logSql"] = 1 else: mysqlsh.globals.shell.options.logLevel = 6