Skip to content

Commit e77e6f9

Browse files
authored
Merge pull request #12 from ucloud/backup-onejob
Backup onejob
2 parents 03372f9 + e58da6e commit e77e6f9

File tree

5 files changed

+247
-218
lines changed

5 files changed

+247
-218
lines changed

pkg/apis/redis/v1alpha1/default.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,7 @@ func (in *RedisClusterBackup) Location() (string, error) {
116116
func (in *RedisClusterBackup) OSMSecretName() string {
117117
return fmt.Sprintf("osm-%v", in.Name)
118118
}
119+
120+
func (in *RedisClusterBackup) JobName() string {
121+
return fmt.Sprintf("redisbacup-%v", in.Name)
122+
}

pkg/apis/redis/v1alpha1/redisclusterbackup_types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ const (
143143
BackupPhaseSucceeded BackupPhase = "Succeeded"
144144
// used for Backup that are Failed
145145
BackupPhaseFailed BackupPhase = "Failed"
146+
// used for Backup that are Ignored
147+
BackupPhaseIgnored BackupPhase = "Ignored"
146148
)
147149

148150
// RedisClusterBackupStatus defines the observed state of RedisClusterBackup

pkg/controller/redisclusterbackup/helper.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,20 @@ func (r *ReconcileRedisClusterBackup) markAsFailedBackup(backup *redisv1alpha1.R
2323
return r.crController.UpdateCRStatus(backup)
2424
}
2525

26+
func (r *ReconcileRedisClusterBackup) markAsIgnoredBackup(backup *redisv1alpha1.RedisClusterBackup,
27+
reason string) error {
28+
t := metav1.Now()
29+
backup.Status.CompletionTime = &t
30+
backup.Status.Phase = redisv1alpha1.BackupPhaseIgnored
31+
backup.Status.Reason = reason
32+
return r.crController.UpdateCRStatus(backup)
33+
}
34+
2635
func (r *ReconcileRedisClusterBackup) isBackupRunning(backup *redisv1alpha1.RedisClusterBackup) (bool, error) {
2736
labMap := client.MatchingLabels{
2837
redisv1alpha1.LabelBackupStatus: string(redisv1alpha1.BackupPhaseRunning),
2938
redisv1alpha1.LabelClusterName: backup.Spec.RedisClusterName,
3039
}
31-
3240
backupList := &redisv1alpha1.RedisClusterBackupList{}
3341
opts := []client.ListOption{
3442
client.InNamespace(backup.Namespace),
@@ -39,7 +47,16 @@ func (r *ReconcileRedisClusterBackup) isBackupRunning(backup *redisv1alpha1.Redi
3947
return false, err
4048
}
4149

42-
if len(backupList.Items) > 0 {
50+
jobLabMap := client.MatchingLabels{
51+
redisv1alpha1.LabelClusterName: backup.Spec.RedisClusterName,
52+
redisv1alpha1.AnnotationJobType: redisv1alpha1.JobTypeBackup,
53+
}
54+
backupJobList, err := r.jobController.ListJobByLabels(backup.Namespace, jobLabMap)
55+
if err != nil {
56+
return false, err
57+
}
58+
59+
if len(backupList.Items) > 0 && len(backupJobList.Items) > 0 {
4360
return true, nil
4461
}
4562

pkg/controller/redisclusterbackup/redisclusterbackup_controller.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
8383
},
8484
CreateFunc: func(e event.CreateEvent) bool {
8585
job := e.Object.(*batch.Job)
86-
if job.Status.Succeeded > 0 || job.Status.Failed > utils.Int32(job.Spec.BackoffLimit) {
86+
if job.Status.Succeeded > 0 || job.Status.Failed >= utils.Int32(job.Spec.BackoffLimit) {
8787
return true
8888
}
8989
return false
@@ -150,7 +150,7 @@ func (r *ReconcileRedisClusterBackup) Reconcile(request reconcile.Request) (reco
150150
// Run finalization logic for backupFinalizer. If the
151151
// finalization logic fails, don't remove the finalizer so
152152
// that we can retry during the next reconciliation.
153-
if err := r.finalizeMemcached(reqLogger, instance); err != nil {
153+
if err := r.finalizeBackup(reqLogger, instance); err != nil {
154154
return reconcile.Result{}, err
155155
}
156156

@@ -179,7 +179,7 @@ func (r *ReconcileRedisClusterBackup) Reconcile(request reconcile.Request) (reco
179179
return reconcile.Result{}, nil
180180
}
181181

182-
func (r *ReconcileRedisClusterBackup) finalizeMemcached(reqLogger logr.Logger, b *redisv1alpha1.RedisClusterBackup) error {
182+
func (r *ReconcileRedisClusterBackup) finalizeBackup(reqLogger logr.Logger, b *redisv1alpha1.RedisClusterBackup) error {
183183
// TODO(user): Add the cleanup steps that the operator
184184
// needs to do before the CR can be deleted. Examples
185185
// of finalizers include performing backups and deleting
@@ -189,7 +189,7 @@ func (r *ReconcileRedisClusterBackup) finalizeMemcached(reqLogger logr.Logger, b
189189
}
190190

191191
func (r *ReconcileRedisClusterBackup) addFinalizer(reqLogger logr.Logger, b *redisv1alpha1.RedisClusterBackup) error {
192-
reqLogger.Info("Adding Finalizer for the Memcached")
192+
reqLogger.Info("Adding Finalizer for the backup")
193193
b.SetFinalizers(append(b.GetFinalizers(), backupFinalizer))
194194

195195
// Update CR

0 commit comments

Comments
 (0)