in mysqloperator/controller/backup/backup_objects.py [0:0]
def update_schedules(spec: InnoDBClusterSpec, old: dict, new: dict, logger: Logger) -> int:
logger.info("backup_objects.updates_schedules")
namespace = spec.namespace
cluster_name = spec.name
diff = compare_schedules(spec, old, new, logger)
logger.info(f"backup_objects.update_schedules: diff={diff}")
if (len(diff['removed']) == 0 and \
len(diff['added']) == 0 and \
len(diff['modified']) == 0):
logger.info("No backup schedules changes")
return 0
if len(diff['removed']):
logger.info(f"backup_objects.update_schedules: will delete {len(diff['removed'])} backup schedule objects")
for rm_schedule_name in diff['removed']:
cj_name = schedule_cron_job_name(cluster_name, rm_schedule_name)
logger.info(f"backup_objects.update_schedules: deleting schedule {cj_name} in {namespace} ")
api_cron_job.delete_namespaced_cron_job(cj_name, namespace)
if len(diff['added']):
logger.info(f"backup_objects.update_schedules: will add {len(diff['added'])} backup schedule objects")
cj_template = get_cron_job_template(spec)
for add_schedule_name, add_schedule_obj in diff['added'].items():
cj_name = schedule_cron_job_name(cluster_name, add_schedule_name)
logger.info(f"backup_objects.update_schedules: adding schedule {cj_name} in {namespace}")
cronjob = patch_cron_template_for_backup_schedule(cj_template, spec.name, add_schedule_obj)
kopf.adopt(cronjob)
api_cron_job.create_namespaced_cron_job(namespace=namespace, body=cronjob)
if len(diff['modified']):
logger.info(f"backup_objects.update_schedules: will modify {len(diff['modified'])} backup schedule objects")
cj_template = get_cron_job_template(spec)
for mod_schedule_name, mod_schedule_objects in diff['modified'].items():
cj_name = schedule_cron_job_name(cluster_name, mod_schedule_name)
logger.info(f"backup_objects.update_schedules: modifying schedule {cj_name} in {namespace}")
cronjob = patch_cron_template_for_backup_schedule(cj_template, spec.name, mod_schedule_objects["new"])
logger.info(f"backup_objects.update_schedules: {cronjob}")
api_cron_job.replace_namespaced_cron_job(name=cj_name, namespace=namespace, body=cronjob)