From 5e5e4a9a7733f1b657f1536e5e1e1eed155546ea Mon Sep 17 00:00:00 2001 From: Jean-Marc Andre Date: Fri, 24 Mar 2023 11:30:30 +0100 Subject: [PATCH] remove the initContainer once the restore is done --- controllers/backupsession_controller.go | 3 +++ standalone/root.go | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/controllers/backupsession_controller.go b/controllers/backupsession_controller.go index b7e0767..b1177fe 100644 --- a/controllers/backupsession_controller.go +++ b/controllers/backupsession_controller.go @@ -54,6 +54,9 @@ func (r *BackupSessionReconciler) Reconcile(ctx context.Context, req ctrl.Reques var targetStatus *formolv1alpha1.TargetStatus var result error targetName := os.Getenv(formolv1alpha1.TARGET_NAME) + if targetName == "" { + panic("targetName is empty. That should not happen") + } for i, t := range backupConf.Spec.Targets { if t.TargetName == targetName { diff --git a/standalone/root.go b/standalone/root.go index 98c2c5e..53ec3c3 100644 --- a/standalone/root.go +++ b/standalone/root.go @@ -87,6 +87,27 @@ func StartRestore( log.Error(err, "unable to update RestoreSession", "restoreSession", restoreSession) return } + log.V(0).Info("restore over. removing the initContainer") + targetObject, targetPodSpec := formolv1alpha1.GetTargetObjects(target.TargetKind) + if err := session.Get(session.Context, client.ObjectKey{ + Namespace: restoreSessionNamespace, + Name: target.TargetName, + }, targetObject); err != nil { + log.Error(err, "unable to get target objects", "target", target.TargetName) + return + } + initContainers := []corev1.Container{} + for _, c := range targetPodSpec.InitContainers { + if c.Name == formolv1alpha1.RESTORECONTAINER_NAME { + continue + } + initContainers = append(initContainers, c) + } + targetPodSpec.InitContainers = initContainers + if err := session.Update(session.Context, targetObject); err != nil { + log.Error(err, "unable to remove the restore initContainer", "targetObject", targetObject) + return + } break } }