From 627459384048f1ca46f35890926fbd675e59fcd7 Mon Sep 17 00:00:00 2001 From: Lyndon-Li Date: Mon, 16 Jun 2025 16:15:58 +0800 Subject: [PATCH] legacy pvr controller for restic path Signed-off-by: Lyndon-Li --- changelogs/unreleased/9022-Lyndon-Li | 1 + pkg/cmd/cli/nodeagent/server.go | 4 ++++ .../pod_volume_restore_controller_legacy.go | 3 +-- ...d_volume_restore_controller_legacy_test.go | 22 +++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/9022-Lyndon-Li diff --git a/changelogs/unreleased/9022-Lyndon-Li b/changelogs/unreleased/9022-Lyndon-Li new file mode 100644 index 000000000..b23fa43d4 --- /dev/null +++ b/changelogs/unreleased/9022-Lyndon-Li @@ -0,0 +1 @@ +Fix issue #8963, add legacy PVR controller for Restic path \ No newline at end of file diff --git a/pkg/cmd/cli/nodeagent/server.go b/pkg/cmd/cli/nodeagent/server.go index c7e987ddc..158327e06 100644 --- a/pkg/cmd/cli/nodeagent/server.go +++ b/pkg/cmd/cli/nodeagent/server.go @@ -311,6 +311,10 @@ func (s *nodeAgentServer) run() { s.logger.WithError(err).Fatal("Unable to create the pod volume restore controller") } + if err := controller.InitLegacyPodVolumeRestoreReconciler(s.mgr.GetClient(), s.mgr, s.kubeClient, s.dataPathMgr, s.namespace, s.config.resourceTimeout, s.logger); err != nil { + s.logger.WithError(err).Fatal("Unable to create the legacy pod volume restore controller") + } + dataUploadReconciler := controller.NewDataUploadReconciler( s.mgr.GetClient(), s.mgr, diff --git a/pkg/controller/pod_volume_restore_controller_legacy.go b/pkg/controller/pod_volume_restore_controller_legacy.go index d803ce759..b03e27b0e 100644 --- a/pkg/controller/pod_volume_restore_controller_legacy.go +++ b/pkg/controller/pod_volume_restore_controller_legacy.go @@ -41,7 +41,6 @@ import ( "github.com/vmware-tanzu/velero/internal/credentials" veleroapishared "github.com/vmware-tanzu/velero/pkg/apis/velero/shared" - velerov1 "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" "github.com/vmware-tanzu/velero/pkg/datapath" "github.com/vmware-tanzu/velero/pkg/exposer" @@ -205,7 +204,7 @@ func (c *PodVolumeRestoreReconcilerLegacy) SetupWithManager(mgr ctrl.Manager) er // The pod may not being scheduled at the point when its PVRs are initially reconciled. // By watching the pods, we can trigger the PVR reconciliation again once the pod is finally scheduled on the node. pred := kube.NewAllEventPredicate(func(obj client.Object) bool { - pvr := obj.(*velerov1.PodVolumeRestore) + pvr := obj.(*velerov1api.PodVolumeRestore) return isLegacyPVR(pvr) }) diff --git a/pkg/controller/pod_volume_restore_controller_legacy_test.go b/pkg/controller/pod_volume_restore_controller_legacy_test.go index ff0b5741a..87bb00a13 100644 --- a/pkg/controller/pod_volume_restore_controller_legacy_test.go +++ b/pkg/controller/pod_volume_restore_controller_legacy_test.go @@ -65,6 +65,28 @@ func TestFindVolumeRestoresForPodLegacy(t *testing.T) { }, }, }, + { + ObjectMeta: metav1.ObjectMeta{ + Name: "pvr3", + Labels: map[string]string{ + velerov1api.PodUIDLabel: string(pod.GetUID()), + }, + }, + Spec: velerov1api.PodVolumeRestoreSpec{ + UploaderType: "kopia", + }, + }, + { + ObjectMeta: metav1.ObjectMeta{ + Name: "pvr4", + Labels: map[string]string{ + velerov1api.PodUIDLabel: string(pod.GetUID()), + }, + }, + Spec: velerov1api.PodVolumeRestoreSpec{ + UploaderType: "restic", + }, + }, }, }).Build() requests = reconciler.findVolumeRestoresForPod(context.Background(), pod)