From 740ab42d7bad08734005ef8c1a144c32d8d43fa5 Mon Sep 17 00:00:00 2001 From: salonichf5 <146118978+salonichf5@users.noreply.github.com> Date: Fri, 14 Feb 2025 11:27:22 -0700 Subject: [PATCH 1/2] fix revert commit --- internal/mode/static/manager.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/mode/static/manager.go b/internal/mode/static/manager.go index c99752a825..79d366fef5 100644 --- a/internal/mode/static/manager.go +++ b/internal/mode/static/manager.go @@ -262,6 +262,10 @@ func StartManager(cfg config.Config) error { return fmt.Errorf("cannot register event loop: %w", err) } + if err = mgr.Add(runnables.NewEnableAfterBecameLeader(groupStatusUpdater.Enable)); err != nil { + return fmt.Errorf("cannot register status updater: %w", err) + } + if cfg.ProductTelemetryConfig.Enabled { dataCollector := telemetry.NewDataCollectorImpl(telemetry.DataCollectorConfig{ K8sClientReader: mgr.GetAPIReader(), From 00f2ffa10c6b3361c39730f24bd45c48e2e2b618 Mon Sep 17 00:00:00 2001 From: Benjamin Jee Date: Fri, 14 Feb 2025 14:01:35 -0800 Subject: [PATCH 2/2] Add back runnables change and call to nginx provisioner enable --- internal/framework/runnables/runnables.go | 29 +++++++++++-------- .../framework/runnables/runnables_test.go | 19 +++++++----- internal/mode/static/manager.go | 7 +++-- 3 files changed, 33 insertions(+), 22 deletions(-) diff --git a/internal/framework/runnables/runnables.go b/internal/framework/runnables/runnables.go index d960475008..8304c326c0 100644 --- a/internal/framework/runnables/runnables.go +++ b/internal/framework/runnables/runnables.go @@ -34,29 +34,34 @@ func (r *LeaderOrNonLeader) NeedLeaderElection() bool { return false } -// EnableAfterBecameLeader is a Runnable that will call the enable function when the current instance becomes +// CallFunctionsAfterBecameLeader is a Runnable that will call the given functions when the current instance becomes // the leader. -type EnableAfterBecameLeader struct { - enable func(context.Context) +type CallFunctionsAfterBecameLeader struct { + enableFunctions []func(context.Context) } var ( - _ manager.LeaderElectionRunnable = &EnableAfterBecameLeader{} - _ manager.Runnable = &EnableAfterBecameLeader{} + _ manager.LeaderElectionRunnable = &CallFunctionsAfterBecameLeader{} + _ manager.Runnable = &CallFunctionsAfterBecameLeader{} ) -// NewEnableAfterBecameLeader creates a new EnableAfterBecameLeader Runnable. -func NewEnableAfterBecameLeader(enable func(context.Context)) *EnableAfterBecameLeader { - return &EnableAfterBecameLeader{ - enable: enable, +// NewCallFunctionsAfterBecameLeader creates a new CallFunctionsAfterBecameLeader Runnable. +func NewCallFunctionsAfterBecameLeader( + enableFunctions []func(context.Context), +) *CallFunctionsAfterBecameLeader { + return &CallFunctionsAfterBecameLeader{ + enableFunctions: enableFunctions, } } -func (j *EnableAfterBecameLeader) Start(ctx context.Context) error { - j.enable(ctx) +func (j *CallFunctionsAfterBecameLeader) Start(ctx context.Context) error { + for _, f := range j.enableFunctions { + f(ctx) + } + return nil } -func (j *EnableAfterBecameLeader) NeedLeaderElection() bool { +func (j *CallFunctionsAfterBecameLeader) NeedLeaderElection() bool { return true } diff --git a/internal/framework/runnables/runnables_test.go b/internal/framework/runnables/runnables_test.go index 9f34d9ccba..6da01a0236 100644 --- a/internal/framework/runnables/runnables_test.go +++ b/internal/framework/runnables/runnables_test.go @@ -23,19 +23,22 @@ func TestLeaderOrNonLeader(t *testing.T) { g.Expect(leaderOrNonLeader.NeedLeaderElection()).To(BeFalse()) } -func TestEnableAfterBecameLeader(t *testing.T) { +func TestCallFunctionsAfterBecameLeader(t *testing.T) { t.Parallel() - enabled := false - enableAfterBecameLeader := NewEnableAfterBecameLeader(func(_ context.Context) { - enabled = true + statusUpdaterEnabled := false + provisionerEnabled := false + + callFunctionsAfterBecameLeader := NewCallFunctionsAfterBecameLeader([]func(ctx context.Context){ + func(_ context.Context) { statusUpdaterEnabled = true }, + func(_ context.Context) { provisionerEnabled = true }, }) g := NewWithT(t) - g.Expect(enableAfterBecameLeader.NeedLeaderElection()).To(BeTrue()) - g.Expect(enabled).To(BeFalse()) + g.Expect(callFunctionsAfterBecameLeader.NeedLeaderElection()).To(BeTrue()) - err := enableAfterBecameLeader.Start(context.Background()) + err := callFunctionsAfterBecameLeader.Start(context.Background()) g.Expect(err).ToNot(HaveOccurred()) - g.Expect(enabled).To(BeTrue()) + g.Expect(statusUpdaterEnabled).To(BeTrue()) + g.Expect(provisionerEnabled).To(BeTrue()) } diff --git a/internal/mode/static/manager.go b/internal/mode/static/manager.go index 79d366fef5..5eb31b3462 100644 --- a/internal/mode/static/manager.go +++ b/internal/mode/static/manager.go @@ -262,8 +262,11 @@ func StartManager(cfg config.Config) error { return fmt.Errorf("cannot register event loop: %w", err) } - if err = mgr.Add(runnables.NewEnableAfterBecameLeader(groupStatusUpdater.Enable)); err != nil { - return fmt.Errorf("cannot register status updater: %w", err) + if err = mgr.Add(runnables.NewCallFunctionsAfterBecameLeader([]func(context.Context){ + groupStatusUpdater.Enable, + nginxProvisioner.Enable, + })); err != nil { + return fmt.Errorf("cannot register functions that get called after Pod becomes leader: %w", err) } if cfg.ProductTelemetryConfig.Enabled {