From 6e34c09d8482e20066a5281da766805026d1dc5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wenkai=20Yin=28=E5=B0=B9=E6=96=87=E5=BC=80=29?= Date: Fri, 13 Dec 2024 15:58:40 +0800 Subject: [PATCH 1/2] Fix issue: backup schedule pause/unpause doesn't work MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The issue is caused by the changes of controller-runtime: WithEventFilter() doesn't apply to WatchesRawSource(), this commit set Predicate for WatchesRawSource() seperatedly Fixes #8437 Signed-off-by: Wenkai Yin(尹文开) --- changelogs/unreleased/8512-ywk253100 | 1 + pkg/controller/schedule_controller.go | 25 ++++++++++++++----------- 2 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 changelogs/unreleased/8512-ywk253100 diff --git a/changelogs/unreleased/8512-ywk253100 b/changelogs/unreleased/8512-ywk253100 new file mode 100644 index 000000000..a7aba0427 --- /dev/null +++ b/changelogs/unreleased/8512-ywk253100 @@ -0,0 +1 @@ +Fix issue: backup schedule pause/unpause doesn't work \ No newline at end of file diff --git a/pkg/controller/schedule_controller.go b/pkg/controller/schedule_controller.go index 40ddf7b79..4b89e98a3 100644 --- a/pkg/controller/schedule_controller.go +++ b/pkg/controller/schedule_controller.go @@ -31,6 +31,7 @@ import ( ctrl "sigs.k8s.io/controller-runtime" bld "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/predicate" velerov1 "github.com/vmware-tanzu/velero/pkg/apis/velero/v1" "github.com/vmware-tanzu/velero/pkg/builder" @@ -70,18 +71,20 @@ func NewScheduleReconciler( } func (c *scheduleReconciler) SetupWithManager(mgr ctrl.Manager) error { - s := kube.NewPeriodicalEnqueueSource(c.logger.WithField("controller", constant.ControllerSchedule), mgr.GetClient(), &velerov1.ScheduleList{}, scheduleSyncPeriod, kube.PeriodicalEnqueueSourceOption{}) + pred := kube.NewAllEventPredicate(func(obj client.Object) bool { + schedule := obj.(*velerov1.Schedule) + if pause := schedule.Spec.Paused; pause { + c.logger.Infof("schedule %s is paused, skip", schedule.Name) + return false + } + return true + }) + s := kube.NewPeriodicalEnqueueSource(c.logger.WithField("controller", constant.ControllerSchedule), mgr.GetClient(), &velerov1.ScheduleList{}, scheduleSyncPeriod, + kube.PeriodicalEnqueueSourceOption{ + Predicates: []predicate.Predicate{pred}, + }) return ctrl.NewControllerManagedBy(mgr). - // global predicate, works for both For and Watch - WithEventFilter(kube.NewAllEventPredicate(func(obj client.Object) bool { - schedule := obj.(*velerov1.Schedule) - if pause := schedule.Spec.Paused; pause { - c.logger.Infof("schedule %s is paused, skip", schedule.Name) - return false - } - return true - })). - For(&velerov1.Schedule{}, bld.WithPredicates(kube.SpecChangePredicate{})). + For(&velerov1.Schedule{}, bld.WithPredicates(kube.SpecChangePredicate{}, pred)). WatchesRawSource(s). Complete(c) } From 876a1fc30ffe411bf316d7b8bb87409a6163a432 Mon Sep 17 00:00:00 2001 From: Lyndon-Li Date: Wed, 18 Dec 2024 20:13:42 +0800 Subject: [PATCH 2/2] fix gcr image missing problem Signed-off-by: Lyndon-Li --- hack/docker-push.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/hack/docker-push.sh b/hack/docker-push.sh index b54f01038..67117476b 100755 --- a/hack/docker-push.sh +++ b/hack/docker-push.sh @@ -113,4 +113,5 @@ TAG_LATEST="$TAG_LATEST" \ BUILD_OS="$BUILD_OS" \ BUILD_ARCH="$BUILD_ARCH" \ BUILD_OUTPUT_TYPE=$OUTPUT_TYPE \ +BUILD_TAG_GCR=true \ make all-containers \ No newline at end of file