mysqloperator/controller/operator.py (24 lines of code) (raw):

# Copyright (c) 2020, 2023, Oracle and/or its affiliates. # # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ # from pathlib import Path from logging import Logger from .innodbcluster import cluster_api from . import config, utils from .group_monitor import g_group_monitor import kopf import logging # These have to be imported so that kopf sees the annotations in those files from .innodbcluster import operator_cluster from .backup import operator_backup # @kopf.on.login() # def on_login(**kwargs): # return kopf.login_via_client(**kwargs) @kopf.on.startup() # type: ignore def on_startup(settings: kopf.OperatorSettings, logger: Logger, *args, **_): utils.log_banner(__file__, logger) config.log_config_banner(logger) # don't post logger.debug() calls as k8s events settings.posting.level = logging.INFO settings.posting.enabled = False # Change the annotation field for storing kopf state, so that the main operator # and the pod controller don't collide # settings.persistence.finalizer = "operator.mysql.oracle.com/kopf-finalizer" # settings.persistence.progress_storage = kopf.AnnotationsProgressStorage(prefix='operator.mysql.oracle.com') # settings.persistence.diffbase_storage = kopf.AnnotationsDiffBaseStorage( # name='operator.mysql.oracle.com/last-handled-configuration' # ) clusters = cluster_api.get_all_clusters() operator_cluster.ensure_backup_schedules_use_current_image(clusters, logger) operator_cluster.monitor_existing_clusters(clusters, logger) operator_cluster.ensure_router_accounts_are_uptodate(clusters, logger) g_group_monitor.start() Path('/tmp/mysql-operator-ready').touch() @kopf.on.cleanup() # type: ignore def on_shutdown(logger: Logger, *args, **kwargs): g_group_monitor.stop()