Skip to content

Commit 81186a8

Browse files
committed
fix tests
1 parent 35a2e22 commit 81186a8

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

pkg/controller/perconaservermongodbrestore/physical.go

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,13 @@ func (r *ReconcilePerconaServerMongoDBRestore) reconcilePhysicalRestore(
9292
}
9393

9494
status.State = psmdbv1.RestoreStateWaiting
95+
return status, nil
9596
}
9697

97-
if cr.Status.State == psmdbv1.RestoreStateWaiting || status.State == psmdbv1.RestoreStateWaiting {
98+
stdoutBuf := &bytes.Buffer{}
99+
stderrBuf := &bytes.Buffer{}
100+
101+
if cr.Status.State == psmdbv1.RestoreStateWaiting {
98102
if err := r.prepareStatefulSetsForPhysicalRestore(ctx, cluster); err != nil {
99103
return status, errors.Wrap(err, "prepare statefulsets for physical restore")
100104
}
@@ -104,12 +108,12 @@ func (r *ReconcilePerconaServerMongoDBRestore) reconcilePhysicalRestore(
104108
return status, errors.Wrap(err, "check if statefulsets are ready for physical restore")
105109
}
106110

107-
if (!sfsReady && cr.Status.State != psmdbv1.RestoreStateRunning) || cr.Status.State == psmdbv1.RestoreStateNew {
111+
if !sfsReady {
108112
log.Info("Waiting for statefulsets to be ready before restore", "ready", sfsReady)
109113
return status, nil
110114
}
111115

112-
if sfsReady && cr.Spec.PITR != nil {
116+
if cr.Spec.PITR != nil {
113117
rsReady, err := r.checkIfReplsetsAreReadyForPhysicalRestore(ctx, cluster)
114118
if err != nil {
115119
return status, errors.Wrap(err, "check if replsets are ready for physical restore")
@@ -124,12 +128,7 @@ func (r *ReconcilePerconaServerMongoDBRestore) reconcilePhysicalRestore(
124128
return status, nil
125129
}
126130
}
127-
}
128131

129-
stdoutBuf := &bytes.Buffer{}
130-
stderrBuf := &bytes.Buffer{}
131-
132-
if cr.Status.State == psmdbv1.RestoreStateWaiting {
133132
rs := replsets[0]
134133

135134
pbmAgentsReady, err := r.checkIfPBMAgentsReadyForPhysicalRestore(ctx, cluster)
@@ -198,8 +197,11 @@ func (r *ReconcilePerconaServerMongoDBRestore) reconcilePhysicalRestore(
198197
}
199198
return status, errors.Wrap(err, "get pod")
200199
}
200+
if !pod.DeletionTimestamp.IsZero() {
201+
return status, nil
202+
}
201203

202-
if pod.Spec.Containers[0].Name == naming.ContainerBackupAgent && pod.DeletionTimestamp == nil {
204+
if !hasContainerName(pod.Spec.Containers, naming.ContainerBackupAgent) {
203205
meta := backup.BackupMeta{}
204206
notFound := false
205207

@@ -266,7 +268,6 @@ func (r *ReconcilePerconaServerMongoDBRestore) reconcilePhysicalRestore(
266268
return status, nil
267269
}
268270

269-
// status.State = psmdbv1.RestoreStateReady
270271
restoreIsDone = true
271272
}
272273

@@ -296,20 +297,17 @@ func (r *ReconcilePerconaServerMongoDBRestore) reconcilePhysicalRestore(
296297
status.State = psmdbv1.RestoreStateReady
297298

298299
err = retry.RetryOnConflict(retry.DefaultBackoff, func() error {
299-
c := &psmdbv1.PerconaServerMongoDB{}
300-
err := r.client.Get(ctx, types.NamespacedName{Name: cluster.Name, Namespace: cluster.Namespace}, c)
301-
if err != nil {
300+
c := new(psmdbv1.PerconaServerMongoDB)
301+
if err := r.client.Get(ctx, client.ObjectKeyFromObject(cluster), c); err != nil {
302302
return err
303303
}
304304

305-
orig := c.DeepCopy()
306-
307305
if c.Annotations == nil {
308306
c.Annotations = make(map[string]string)
309307
}
310308
c.Annotations[psmdbv1.AnnotationResyncPBM] = "true"
311309

312-
return r.client.Patch(ctx, c, client.MergeFrom(orig))
310+
return r.client.Update(ctx, c)
313311
})
314312
if err != nil {
315313
return status, errors.Wrapf(err, "annotate psmdb/%s for PBM resync", cluster.Name)
@@ -318,12 +316,27 @@ func (r *ReconcilePerconaServerMongoDBRestore) reconcilePhysicalRestore(
318316
return status, nil
319317
}
320318

319+
func hasContainerName(containers []corev1.Container, name string) bool {
320+
for _, c := range containers {
321+
if c.Name == name {
322+
return true
323+
}
324+
}
325+
return false
326+
}
327+
321328
func (r *ReconcilePerconaServerMongoDBRestore) finishPhysicalRestore(ctx context.Context, cluster *api.PerconaServerMongoDB) (bool, error) {
322329
stsIsUpdated := true
323330
if err := r.updateMongodSts(ctx, cluster, func(sts *appsv1.StatefulSet) error {
324-
if sts.Spec.Template.Spec.Containers[0].Name == naming.ContainerBackupAgent {
325-
stsIsUpdated = false
326-
} else if sts.Annotations[psmdbv1.AnnotationRestoreInProgress] != "true" {
331+
if !sts.DeletionTimestamp.IsZero() {
332+
return nil
333+
}
334+
335+
if !hasContainerName(sts.Spec.Template.Spec.Containers, naming.ContainerBackupAgent) {
336+
return errors.Errorf("statefulsets weren't deleted")
337+
}
338+
339+
if sts.Annotations[psmdbv1.AnnotationRestoreInProgress] != "true" {
327340
stsIsUpdated = false
328341
sts.Annotations[psmdbv1.AnnotationRestoreInProgress] = "true"
329342
}

0 commit comments

Comments
 (0)