diff --git a/controllers/backupconfiguration_controller_helpers.go b/controllers/backupconfiguration_controller_helpers.go index 68eab52..300d7a7 100644 --- a/controllers/backupconfiguration_controller_helpers.go +++ b/controllers/backupconfiguration_controller_helpers.go @@ -130,6 +130,36 @@ func (r *BackupConfigurationReconciler) AddCronJob(backupConf formolv1alpha1.Bac } } +func (r *BackupConfigurationReconciler) getTargetObjects(kind formolv1alpha1.TargetKind, namespace string, name string) (targetObject client.Object, targetPodSpec *corev1.PodSpec, err error) { + switch kind { + case formolv1alpha1.Deployment: + deployment := appsv1.Deployment{} + if err = r.Get(r.Context, client.ObjectKey{ + Namespace: namespace, + Name: name, + }, &deployment); err != nil { + r.Log.Error(err, "cannot get deployment", "Deployment", name) + return + } + targetObject = &deployment + targetPodSpec = &deployment.Spec.Template.Spec + + case formolv1alpha1.StatefulSet: + statefulSet := appsv1.StatefulSet{} + if err = r.Get(r.Context, client.ObjectKey{ + Namespace: namespace, + Name: name, + }, &statefulSet); err != nil { + r.Log.Error(err, "cannot get StatefulSet", "StatefulSet", name) + return + } + targetObject = &statefulSet + targetPodSpec = &statefulSet.Spec.Template.Spec + + } + return +} + func (r *BackupConfigurationReconciler) DeleteSidecar(backupConf formolv1alpha1.BackupConfiguration) error { removeTags := func(podSpec *corev1.PodSpec, target formolv1alpha1.Target) { for i, container := range podSpec.Containers { @@ -160,33 +190,10 @@ func (r *BackupConfigurationReconciler) DeleteSidecar(backupConf formolv1alpha1. } r.Log.V(1).Info("Got Repository", "repo", repo) for _, target := range backupConf.Spec.Targets { - var targetObject client.Object - var targetPodSpec *corev1.PodSpec - switch target.TargetKind { - case formolv1alpha1.Deployment: - deployment := appsv1.Deployment{} - if err := r.Get(r.Context, client.ObjectKey{ - Namespace: backupConf.Namespace, - Name: target.TargetName, - }, &deployment); err != nil { - r.Log.Error(err, "cannot get deployment", "Deployment", target.TargetName) - return err - } - targetObject = &deployment - targetPodSpec = &deployment.Spec.Template.Spec - - case formolv1alpha1.StatefulSet: - statefulSet := appsv1.StatefulSet{} - if err := r.Get(r.Context, client.ObjectKey{ - Namespace: backupConf.Namespace, - Name: target.TargetName, - }, &statefulSet); err != nil { - r.Log.Error(err, "cannot get deployment", "Deployment", target.TargetName) - return err - } - targetObject = &statefulSet - targetPodSpec = &statefulSet.Spec.Template.Spec - + targetObject, targetPodSpec, err := r.getTargetObjects(target.TargetKind, backupConf.Namespace, target.TargetName) + if err != nil { + r.Log.Error(err, "unable to get target objects") + return err } restoreContainers := []corev1.Container{} for _, container := range targetPodSpec.Containers { @@ -218,7 +225,7 @@ func (r *BackupConfigurationReconciler) DeleteSidecar(backupConf formolv1alpha1. } targetPodSpec.Volumes = restoreVolumes removeTags(targetPodSpec, target) - if err := r.Update(r.Context, targetObject); err != nil { + if err = r.Update(r.Context, targetObject); err != nil { r.Log.Error(err, "unable to remove sidecar", "targetObject", targetObject) return err } @@ -269,31 +276,10 @@ func (r *BackupConfigurationReconciler) addSidecar(backupConf formolv1alpha1.Bac Privileged: func() *bool { b := true; return &b }(), }, } - var targetObject client.Object - var targetPodSpec *corev1.PodSpec - switch target.TargetKind { - case formolv1alpha1.Deployment: - deployment := appsv1.Deployment{} - if err = r.Get(r.Context, client.ObjectKey{ - Namespace: backupConf.Namespace, - Name: target.TargetName, - }, &deployment); err != nil { - r.Log.Error(err, "cannot get deployment", "Deployment", target.TargetName) - return - } - targetObject = &deployment - targetPodSpec = &deployment.Spec.Template.Spec - case formolv1alpha1.StatefulSet: - statefulSet := appsv1.StatefulSet{} - if err = r.Get(r.Context, client.ObjectKey{ - Namespace: backupConf.Namespace, - Name: target.TargetName, - }, &statefulSet); err != nil { - r.Log.Error(err, "cannot get deployment", "Deployment", target.TargetName) - return - } - targetObject = &statefulSet - targetPodSpec = &statefulSet.Spec.Template.Spec + targetObject, targetPodSpec, err := r.getTargetObjects(target.TargetKind, backupConf.Namespace, target.TargetName) + if err != nil { + r.Log.Error(err, "unable to get target objects") + return err } if !hasSidecar(targetPodSpec) { if err = r.createRBACSidecar(corev1.ServiceAccount{