From 61c8e58fef5962f67d00491853b74928a3c0aff7 Mon Sep 17 00:00:00 2001 From: Emily McMullan Date: Tue, 11 Apr 2023 16:27:18 -0400 Subject: [PATCH] remove datasource from pvc if prior csi restore Signed-off-by: Emily McMullan --- changelogs/unreleased/6111-eemcmullan | 2 ++ pkg/backup/backup_pv_action.go | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/6111-eemcmullan diff --git a/changelogs/unreleased/6111-eemcmullan b/changelogs/unreleased/6111-eemcmullan new file mode 100644 index 000000000..608f5a828 --- /dev/null +++ b/changelogs/unreleased/6111-eemcmullan @@ -0,0 +1,2 @@ +Remove any dataSource or dataSourceRef fields from PVCs in PVC BIA for cases of +prior PVC restores with CSI \ No newline at end of file diff --git a/pkg/backup/backup_pv_action.go b/pkg/backup/backup_pv_action.go index 6eb8b9309..e11598809 100644 --- a/pkg/backup/backup_pv_action.go +++ b/pkg/backup/backup_pv_action.go @@ -20,6 +20,7 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" corev1api "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" v1 "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" @@ -61,5 +62,19 @@ func (a *PVCAction) Execute(item runtime.Unstructured, backup *v1.Backup) (runti GroupResource: kuberesource.PersistentVolumes, Name: pvc.Spec.VolumeName, } - return item, []velero.ResourceIdentifier{pv}, nil + // remove dataSource if exists from prior restored CSI volumes + if pvc.Spec.DataSource != nil { + pvc.Spec.DataSource = nil + } + if pvc.Spec.DataSourceRef != nil { + pvc.Spec.DataSourceRef = nil + } + + pvcMap, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&pvc) + if err != nil { + return nil, nil, errors.Wrap(err, "unable to convert pvc to unstructured item") + } + + return &unstructured.Unstructured{Object: pvcMap}, []velero.ResourceIdentifier{pv}, nil + }