mysqloperator/controller/backup/operator_backup.py (24 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 kubernetes.client.rest import ApiException from .. import consts, kubeutils, config, utils from ..kubeutils import api_core, api_batch from ..innodbcluster.cluster_api import InnoDBCluster from .backup_api import MySQLBackup from . import backup_objects import kopf from logging import Logger @kopf.on.create(consts.GROUP, consts.VERSION, consts.MYSQLBACKUP_PLURAL) # type: ignore def on_mysqlbackup_create(name: str, namespace: str, spec: dict, body: dict, logger: Logger, **kwargs): logger.info(f"Initializing MySQL Backup job name={name} namespace={namespace}") backup = MySQLBackup(body) jobname = name if backup.parsed_spec.addTimestampToBackupDirectory: jobname = jobname + "-" + utils.timestamp() job = backup_objects.prepare_backup_job(jobname, backup.parsed_spec) kopf.adopt(job) try: api_batch.create_namespaced_job(namespace, body=job) except ApiException as exc: print(f"Exception {exc} when calling create_namespaced_job({consts.GROUP}, {consts.VERSION}, {namespace}, {consts.MYSQLBACKUP_PLURAL} body={body}") raise kopf.PermanentError(f"Exception {exc} when calling create_namespaced_job({consts.GROUP}, {consts.VERSION}, {namespace}, {consts.MYSQLBACKUP_PLURAL} body={body}") return 0 # TODO create a job to delete the data when the job is deleted