From 956c726a63f5f07fc7c1a1d323a137d1421831d8 Mon Sep 17 00:00:00 2001 From: Jean-Marc Andre Date: Sun, 21 Feb 2021 14:27:54 +0100 Subject: [PATCH] Skip the restore if it has already been done --- pkg/restore/root.go | 4 +++- pkg/session/root.go | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/restore/root.go b/pkg/restore/root.go index 95f8127..fa27b0c 100644 --- a/pkg/restore/root.go +++ b/pkg/restore/root.go @@ -26,7 +26,9 @@ func init() { func RestoreVolume(snapshotId string) error { log := logger.WithName("restore-volume") - session.RestoreSessionUpdateTargetStatus(formolv1alpha1.Running) + if err := session.RestoreSessionUpdateTargetStatus(formolv1alpha1.Running); err != nil { + return err + } state := formolv1alpha1.Success output, err := restic.RestorePaths(snapshotId) if err != nil { diff --git a/pkg/session/root.go b/pkg/session/root.go index d35ae78..7be9e15 100644 --- a/pkg/session/root.go +++ b/pkg/session/root.go @@ -2,6 +2,7 @@ package session import ( "context" + "errors" formolv1alpha1 "github.com/desmo999r/formol/api/v1alpha1" "github.com/go-logr/logr" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -88,8 +89,13 @@ func RestoreSessionUpdateTargetStatus(state formolv1alpha1.SessionState) error { } for i, target := range restoreSession.Status.Targets { if target.Name == targetName { + if target.SessionState == formolv1alpha1.Success { + return errors.New("the restore has already been done. Skipping") + } restoreSession.Status.Targets[i].SessionState = state - restoreSession.Status.Targets[i].Duration = &metav1.Duration{Duration: time.Now().Sub(restoreSession.Status.Targets[i].StartTime.Time)} + if state == formolv1alpha1.Success || state == formolv1alpha1.Failure { + restoreSession.Status.Targets[i].Duration = &metav1.Duration{Duration: time.Now().Sub(restoreSession.Status.Targets[i].StartTime.Time)} + } } }