@@ -90,39 +90,64 @@ func (r *BackupCronReconciler) Reconcile(ctx context.Context, req ctrl.Request)
9090 return ctrl.Result {}, err
9191 }
9292 // if spec.backupScheduler is not set then don't do anything
93- if len (instance .Spec .BackupSchedule ) == 0 || * instance .Spec .Replicas == 0 {
93+ if instance .Spec .BothS3NFS == nil &&
94+ (len (instance .Spec .BackupSchedule ) == 0 || * instance .Spec .Replicas == 0 ) {
9495 if err := r .Cron .Remove (instance .Name ); err == nil {
9596 log .V (1 ).Info ("remove cronjob from cluster" , "name" , instance .Name )
9697 }
9798
9899 return reconcile.Result {}, nil
99100 }
101+ // do the bothS3NFS
102+ if instance .Spec .BothS3NFS != nil {
103+ froms := []struct {
104+ Sche string
105+ T string
106+ }{
107+ {instance .Spec .BothS3NFS .NFSSchedule , "nfs" },
108+ {instance .Spec .BothS3NFS .S3Schedule , "s3" },
109+ }
100110
101- schedule , err := cron .Parse (instance .Spec .BackupSchedule )
102- if err != nil {
103- return reconcile.Result {}, fmt .Errorf ("failed to parse schedule: %s" , err )
104- }
111+ for _ , f := range froms {
112+ schestr , t := f .Sche , f .T
113+ schedule , err := cron .Parse (schestr )
114+ if err != nil {
115+ return reconcile.Result {}, fmt .Errorf ("failed to parse schedule: %s" , err )
116+ }
117+ if err := r .updateClusterSchedule (ctx , instance .Unwrap (), schedule , t , log ); err != nil {
118+ return ctrl.Result {}, err
119+ }
120+ }
121+ return ctrl.Result {}, nil
122+ } else {
123+ schedule , err := cron .Parse (instance .Spec .BackupSchedule )
124+ if err != nil {
125+ return reconcile.Result {}, fmt .Errorf ("failed to parse schedule: %s" , err )
126+ }
127+
128+ log .V (1 ).Info ("register cluster in cronjob" , "key" , instance , "schedule" , schedule )
105129
106- log .V (1 ).Info ("register cluster in cronjob" , "key" , instance , "schedule" , schedule )
130+ return ctrl.Result {}, r .updateClusterSchedule (ctx , instance .Unwrap (), schedule , "" , log )
131+ }
107132
108- return ctrl.Result {}, r .updateClusterSchedule (ctx , instance .Unwrap (), schedule , log )
109133}
110134
111135// updateClusterSchedule creates/updates a cron job for specified cluster.
112- func (r * BackupCronReconciler ) updateClusterSchedule (ctx context.Context , cluster * apiv1alpha1.MysqlCluster , schedule cron.Schedule , log logr.Logger ) error {
136+ func (r * BackupCronReconciler ) updateClusterSchedule (ctx context.Context , cluster * apiv1alpha1.MysqlCluster , schedule cron.Schedule , BackupType string , log logr.Logger ) error {
113137
114138 r .LockJobRegister .Lock ()
115139 defer r .LockJobRegister .Unlock ()
116140
117141 for _ , entry := range r .Cron .Entries () {
118142 j , ok := entry .Job .(* backup.CronJob )
119- if ok && j .ClusterName == cluster .Name && j .Namespace == cluster .Namespace {
143+ if ok && j .ClusterName == cluster .Name &&
144+ j .Namespace == cluster .Namespace && j .BackupType == BackupType {
120145 log .V (1 ).Info ("cluster already added to cron." , "key" , cluster )
121146
122147 // change scheduler for already added crons
123148 if ! reflect .DeepEqual (entry .Schedule , schedule ) {
124149 log .Info ("update cluster scheduler" , "key" , cluster ,
125- "scheduler" , cluster . Spec . BackupSchedule )
150+ "scheduler" , schedule )
126151
127152 if err := r .Cron .Remove (cluster .Name ); err != nil {
128153 return err
@@ -136,17 +161,20 @@ func (r *BackupCronReconciler) updateClusterSchedule(ctx context.Context, cluste
136161 return nil
137162 }
138163 }
164+ nfsServerAddress := ""
165+ if BackupType == "nfs" {
166+ nfsServerAddress = cluster .Spec .NFSServerAddress
167+ }
139168
140169 r .Cron .Schedule (schedule , & backup.CronJob {
141170 ClusterName : cluster .Name ,
142171 Namespace : cluster .Namespace ,
143172 Client : r .Client ,
144173 Image : cluster .Spec .PodPolicy .SidecarImage ,
145174 BackupScheduleJobsHistoryLimit : cluster .Spec .BackupScheduleJobsHistoryLimit ,
146- //BackupRemoteDeletePolicy: cluster.Spec.BackupRemoteDeletePolicy,
147-
148- NFSServerAddress : cluster .Spec .NFSServerAddress ,
149- Log : log ,
175+ NFSServerAddress : nfsServerAddress ,
176+ BackupType : BackupType ,
177+ Log : log ,
150178 }, cluster .Name )
151179
152180 return nil
0 commit comments