Skip to content

Commit 539983b

Browse files
committed
Migrate events generation to new interface
With `GetEentRecorderFor` being deprecated, controllers now use the new `GetEventRecorder` method, returning an `events.EventRecorder` instead of a `record.EventRecorder` interface.
1 parent 23ce290 commit 539983b

16 files changed

Lines changed: 177 additions & 93 deletions

File tree

integrationtests/gitjob/controller/suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ var _ = BeforeSuite(func() {
166166
Scheduler: sched,
167167
GitFetcher: fetcherMock,
168168
Clock: reconciler.RealClock{},
169-
Recorder: mgr.GetEventRecorderFor("gitjob-controller"),
169+
Recorder: mgr.GetEventRecorder("gitjob-controller"),
170170
Workers: 50,
171171
SystemNamespace: "default",
172172
KnownHosts: ssh.KnownHosts{},

integrationtests/helmops/controller/suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ var _ = BeforeSuite(func() {
8888
err = (&reconciler.HelmOpReconciler{
8989
Client: mgr.GetClient(),
9090
Scheme: mgr.GetScheme(),
91-
Recorder: mgr.GetEventRecorderFor("helmops-controller"),
91+
Recorder: mgr.GetEventRecorder("helmops-controller"),
9292
Scheduler: sched,
9393
Workers: 50,
9494
}).SetupWithManager(mgr)

internal/cmd/controller/gitops/operator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func (g *GitOperator) Run(cmd *cobra.Command, args []string) error {
177177
JobNodeSelector: g.ShardNodeSelector,
178178
GitFetcher: &git.Fetch{KnownHosts: kh},
179179
Clock: reconciler.RealClock{},
180-
Recorder: mgr.GetEventRecorderFor(fmt.Sprintf("fleet-gitops%s", shardIDSuffix)),
180+
Recorder: mgr.GetEventRecorder(fmt.Sprintf("fleet-gitops%s", shardIDSuffix)),
181181
SystemNamespace: namespace,
182182
KnownHosts: kh,
183183
}

internal/cmd/controller/gitops/reconciler/gitjob.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
ssh "github.com/rancher/fleet/internal/ssh"
2020
v1alpha1 "github.com/rancher/fleet/pkg/apis/fleet.cattle.io/v1alpha1"
2121
"github.com/rancher/fleet/pkg/cert"
22-
fleetevent "github.com/rancher/fleet/pkg/event"
2322
"github.com/rancher/fleet/pkg/sharding"
2423

2524
appsv1 "k8s.io/api/apps/v1"
@@ -70,7 +69,14 @@ func (r *GitJobReconciler) createJobAndResources(ctx context.Context, gitrepo *v
7069
return fmt.Errorf("error creating git job: %w", err)
7170
}
7271

73-
r.Recorder.Event(gitrepo, fleetevent.Normal, "Created", "GitJob was created")
72+
r.Recorder.Eventf(
73+
gitrepo,
74+
nil,
75+
corev1.EventTypeNormal,
76+
"Created",
77+
"CreateGitJob",
78+
"GitJob was created",
79+
)
7480
return nil
7581
}
7682

internal/cmd/controller/gitops/reconciler/gitjob_controller.go

Lines changed: 59 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"github.com/rancher/fleet/internal/metrics"
2525
v1alpha1 "github.com/rancher/fleet/pkg/apis/fleet.cattle.io/v1alpha1"
2626
"github.com/rancher/fleet/pkg/durations"
27-
fleetevent "github.com/rancher/fleet/pkg/event"
2827
"github.com/rancher/fleet/pkg/sharding"
2928

3029
"github.com/rancher/wrangler/v3/pkg/condition"
@@ -41,7 +40,7 @@ import (
4140
"k8s.io/apimachinery/pkg/runtime"
4241
"k8s.io/apimachinery/pkg/types"
4342
errutil "k8s.io/apimachinery/pkg/util/errors"
44-
"k8s.io/client-go/tools/record"
43+
"k8s.io/client-go/tools/events"
4544
"k8s.io/client-go/util/retry"
4645
"sigs.k8s.io/cli-utils/pkg/kstatus/status"
4746
ctrl "sigs.k8s.io/controller-runtime"
@@ -141,7 +140,7 @@ type GitJobReconciler struct {
141140
JobNodeSelector string
142141
GitFetcher GitFetcher
143142
Clock TimeGetter
144-
Recorder record.EventRecorder
143+
Recorder events.EventRecorder
145144
SystemNamespace string
146145
KnownHosts KnownHostsGetter
147146
}
@@ -201,7 +200,15 @@ func (r *GitJobReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
201200
// Restrictions / Overrides, gitrepo reconciler is responsible for setting error in status
202201
oldStatus := gitrepo.Status.DeepCopy()
203202
if err := AuthorizeAndAssignDefaults(ctx, r.Client, gitrepo); err != nil {
204-
r.Recorder.Event(gitrepo, fleetevent.Warning, "FailedToApplyRestrictions", err.Error())
203+
r.Recorder.Eventf(
204+
gitrepo,
205+
nil,
206+
corev1.EventTypeWarning,
207+
"FailedToApplyRestrictions",
208+
"ApplyGitRepoRestrictions",
209+
err.Error(),
210+
)
211+
205212
return ctrl.Result{}, updateErrorStatus(ctx, r.Client, req.NamespacedName, *oldStatus, err)
206213
}
207214

@@ -305,15 +312,29 @@ func (r *GitJobReconciler) manageGitJob(ctx context.Context, logger logr.Logger,
305312
}, &job)
306313
if err != nil && !apierrors.IsNotFound(err) {
307314
err = fmt.Errorf("error retrieving git job: %w", err)
308-
r.Recorder.Event(gitrepo, fleetevent.Warning, "FailedToGetGitJob", err.Error())
315+
r.Recorder.Eventf(
316+
gitrepo,
317+
nil,
318+
corev1.EventTypeWarning,
319+
"FailedToGetGitJob",
320+
"GetGitJob",
321+
err.Error(),
322+
)
309323

310324
return ctrl.Result{}, err
311325
}
312326

313327
if apierrors.IsNotFound(err) {
314328
clientSecretChanged, helmSecretChanged, err := r.hasReferencedSecretChanged(ctx, gitrepo)
315329
if err != nil {
316-
r.Recorder.Event(gitrepo, fleetevent.Warning, "FailedValidatingSecret", err.Error())
330+
r.Recorder.Eventf(
331+
gitrepo,
332+
nil,
333+
corev1.EventTypeWarning,
334+
"FailedValidatingSecret",
335+
"ValidateSecret",
336+
err.Error(),
337+
)
317338
return ctrl.Result{}, fmt.Errorf("error validating external secrets: %w", err)
318339
}
319340

@@ -332,16 +353,37 @@ func (r *GitJobReconciler) manageGitJob(ctx context.Context, logger logr.Logger,
332353
gitrepo.Status.Commit = commit
333354
}
334355
if err != nil {
335-
r.Recorder.Event(gitrepo, fleetevent.Warning, "Failed", err.Error())
356+
r.Recorder.Eventf(
357+
gitrepo,
358+
nil,
359+
corev1.EventTypeWarning,
360+
"Failed",
361+
"MonitorLatestCommit",
362+
err.Error(),
363+
)
336364
} else if oldCommit != gitrepo.Status.Commit {
337-
r.Recorder.Event(gitrepo, fleetevent.Normal, "GotNewCommit", gitrepo.Status.Commit)
365+
r.Recorder.Eventf(
366+
gitrepo,
367+
nil,
368+
corev1.EventTypeNormal,
369+
"GotNewCommit",
370+
"GetNewCommit",
371+
gitrepo.Status.Commit,
372+
)
338373
}
339374
}
340375

341376
if r.shouldCreateJob(gitrepo, oldCommit, helmSecretChanged) {
342377
r.updateGenerationValuesIfNeeded(gitrepo)
343378
if err := r.validateExternalSecretExist(ctx, gitrepo); err != nil {
344-
r.Recorder.Event(gitrepo, fleetevent.Warning, "FailedValidatingSecret", err.Error())
379+
r.Recorder.Eventf(
380+
gitrepo,
381+
nil,
382+
corev1.EventTypeWarning,
383+
"FailedValidatingSecret",
384+
"ValidateSecret",
385+
err.Error(),
386+
)
345387
return ctrl.Result{}, fmt.Errorf("error validating external secrets: %w", err)
346388
}
347389
if err := r.createJobAndResources(ctx, gitrepo, logger); err != nil {
@@ -578,7 +620,14 @@ func (r *GitJobReconciler) deleteJobIfNeeded(ctx context.Context, gitRepo *v1alp
578620
if err := r.Delete(ctx, job, client.PropagationPolicy(metav1.DeletePropagationBackground)); err != nil && !apierrors.IsNotFound(err) {
579621
return err, false
580622
}
581-
r.Recorder.Event(gitRepo, fleetevent.Normal, "JobDeleted", jobDeletedMessage)
623+
r.Recorder.Eventf(
624+
gitRepo,
625+
nil,
626+
corev1.EventTypeNormal,
627+
"JobDeleted",
628+
"DeleteJob",
629+
jobDeletedMessage,
630+
)
582631
}
583632

584633
// finally if there's a job and any of the secrets related to the gitrepo changed,

internal/cmd/controller/gitops/reconciler/gitjob_test.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
//go:generate mockgen --build_flags=--mod=mod -destination=../../../../mocks/client_mock.go -package=mocks -mock_names=Client=MockK8sClient,SubResourceWriter=MockStatusWriter sigs.k8s.io/controller-runtime/pkg/client Client,SubResourceWriter
2+
//go:generate mockgen --build_flags=--mod=mod -destination=../../../../mocks/eventrecorder_mock.go -package=mocks k8s.io/client-go/tools/events EventRecorder
23

34
package reconciler
45

@@ -22,7 +23,6 @@ import (
2223
"github.com/rancher/wrangler/v3/pkg/genericcondition"
2324
"go.uber.org/mock/gomock"
2425

25-
fleetevent "github.com/rancher/fleet/pkg/event"
2626
appsv1 "k8s.io/api/apps/v1"
2727
batchv1 "k8s.io/api/batch/v1"
2828
corev1 "k8s.io/api/core/v1"
@@ -129,10 +129,12 @@ func TestReconcile_Error_WhenGitrepoRestrictionsAreNotMet(t *testing.T) {
129129
)
130130

131131
recorderMock := mocks.NewMockEventRecorder(mockCtrl)
132-
recorderMock.EXPECT().Event(
132+
recorderMock.EXPECT().Eventf(
133133
&gitRepoMatcher{gitRepo},
134-
fleetevent.Warning,
134+
nil,
135+
corev1.EventTypeWarning,
135136
"FailedToApplyRestrictions",
137+
"ApplyGitRepoRestrictions",
136138
"empty targetNamespace denied, because allowedTargetNamespaces restriction is present",
137139
)
138140

@@ -204,10 +206,12 @@ func TestReconcile_Error_WhenGetGitJobErrors(t *testing.T) {
204206

205207
recorderMock := mocks.NewMockEventRecorder(mockCtrl)
206208

207-
recorderMock.EXPECT().Event(
209+
recorderMock.EXPECT().Eventf(
208210
&gitRepoMatcher{gitRepo},
209-
fleetevent.Warning,
211+
nil,
212+
corev1.EventTypeWarning,
210213
"FailedToGetGitJob",
214+
"GetGitJob",
211215
"error retrieving git job: GITJOB ERROR",
212216
)
213217

@@ -275,10 +279,12 @@ func TestReconcile_Error_WhenSecretDoesNotExist(t *testing.T) {
275279

276280
recorderMock := mocks.NewMockEventRecorder(mockCtrl)
277281

278-
recorderMock.EXPECT().Event(
282+
recorderMock.EXPECT().Eventf(
279283
&gitRepoMatcher{gitRepo},
280-
fleetevent.Warning,
284+
nil,
285+
corev1.EventTypeWarning,
281286
"FailedValidatingSecret",
287+
"ValidateSecret",
282288
"failed to look up HelmSecretNameForPaths, error: SECRET ERROR",
283289
)
284290

internal/cmd/controller/gitops/reconciler/polling_job.go

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ import (
1111
"golang.org/x/sync/semaphore"
1212

1313
fleet "github.com/rancher/fleet/pkg/apis/fleet.cattle.io/v1alpha1"
14-
fleetevent "github.com/rancher/fleet/pkg/event"
1514

1615
"github.com/rancher/wrangler/v3/pkg/condition"
1716
"github.com/rancher/wrangler/v3/pkg/kstatus"
1817

18+
corev1 "k8s.io/api/core/v1"
1919
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2020
"k8s.io/apimachinery/pkg/types"
2121
errutil "k8s.io/apimachinery/pkg/util/errors"
22-
"k8s.io/client-go/tools/record"
22+
"k8s.io/client-go/tools/events"
2323
"k8s.io/client-go/util/retry"
2424
"sigs.k8s.io/controller-runtime/pkg/client"
2525
"sigs.k8s.io/controller-runtime/pkg/log"
@@ -37,11 +37,11 @@ type gitPollingJob struct {
3737
repo string
3838
branch string
3939

40-
recorder record.EventRecorder
40+
recorder events.EventRecorder
4141
gitFetcher GitFetcher
4242
}
4343

44-
func newGitPollingJob(c client.Client, r record.EventRecorder, repo fleet.GitRepo, fetcher GitFetcher) *gitPollingJob {
44+
func newGitPollingJob(c client.Client, r events.EventRecorder, repo fleet.GitRepo, fetcher GitFetcher) *gitPollingJob {
4545
return &gitPollingJob{
4646
sem: semaphore.NewWeighted(1),
4747
client: c,
@@ -89,7 +89,15 @@ func (j *gitPollingJob) pollGitRepo(ctx context.Context) error {
8989
pollingTimestamp := time.Now().UTC()
9090

9191
fail := func(origErr error) error {
92-
j.recorder.Event(gitrepo, fleetevent.Warning, "FailedToCheckCommit", origErr.Error())
92+
j.recorder.Eventf(
93+
gitrepo,
94+
nil,
95+
corev1.EventTypeWarning,
96+
"FailedToCheckCommit",
97+
"CheckCommit",
98+
origErr.Error(),
99+
)
100+
93101
return j.updateErrorStatus(ctx, gitrepo, pollingTimestamp, origErr)
94102
}
95103

@@ -101,7 +109,14 @@ func (j *gitPollingJob) pollGitRepo(ctx context.Context) error {
101109
}
102110

103111
if commit != gitrepo.Status.Commit {
104-
j.recorder.Event(gitrepo, fleetevent.Normal, "GotNewCommit", commit)
112+
j.recorder.Eventf(
113+
gitrepo,
114+
nil,
115+
corev1.EventTypeNormal,
116+
"GotNewCommit",
117+
"GetNewCommit",
118+
commit,
119+
)
105120
}
106121

107122
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {

internal/cmd/controller/gitops/reconciler/polling_job_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"go.uber.org/mock/gomock"
1313
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1414
"k8s.io/apimachinery/pkg/types"
15-
"k8s.io/client-go/tools/record"
15+
"k8s.io/client-go/tools/events"
1616
"sigs.k8s.io/controller-runtime/pkg/client"
1717
)
1818

@@ -27,7 +27,7 @@ func TestPollGitRepo(t *testing.T) {
2727
type testcase struct {
2828
name string
2929
gitrepo *v1alpha1.GitRepo
30-
setupMocks func(*mocks.MockK8sClient, *mocks.MockStatusWriter, *gitmocks.MockGitFetcher, *record.FakeRecorder)
30+
setupMocks func(*mocks.MockK8sClient, *mocks.MockStatusWriter, *gitmocks.MockGitFetcher, *events.FakeRecorder)
3131
patchErr string
3232
expectedErr string
3333
expectedEvents []string
@@ -42,7 +42,7 @@ func TestPollGitRepo(t *testing.T) {
4242
Spec: v1alpha1.GitRepoSpec{Repo: repoURL, Branch: branch},
4343
Status: v1alpha1.GitRepoStatus{Commit: "old-commit"},
4444
},
45-
setupMocks: func(c *mocks.MockK8sClient, sw *mocks.MockStatusWriter, gf *gitmocks.MockGitFetcher, r *record.FakeRecorder) {
45+
setupMocks: func(c *mocks.MockK8sClient, sw *mocks.MockStatusWriter, gf *gitmocks.MockGitFetcher, r *events.FakeRecorder) {
4646
nsName := types.NamespacedName{Name: name, Namespace: namespace}
4747
c.EXPECT().Get(gomock.Any(), nsName, gomock.Any()).Times(2).DoAndReturn(func(_ context.Context, _ types.NamespacedName, obj *v1alpha1.GitRepo, _ ...client.GetOption) error {
4848
obj.Name = name
@@ -74,7 +74,7 @@ func TestPollGitRepo(t *testing.T) {
7474
Spec: v1alpha1.GitRepoSpec{Repo: repoURL, Branch: branch},
7575
Status: v1alpha1.GitRepoStatus{Commit: "same-commit"},
7676
},
77-
setupMocks: func(c *mocks.MockK8sClient, sw *mocks.MockStatusWriter, gf *gitmocks.MockGitFetcher, r *record.FakeRecorder) {
77+
setupMocks: func(c *mocks.MockK8sClient, sw *mocks.MockStatusWriter, gf *gitmocks.MockGitFetcher, r *events.FakeRecorder) {
7878
c.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).Times(2).DoAndReturn(func(_ context.Context, _ client.ObjectKey, obj *v1alpha1.GitRepo, _ ...client.GetOption) error {
7979
obj.Name = name
8080
obj.Namespace = namespace
@@ -99,7 +99,7 @@ func TestPollGitRepo(t *testing.T) {
9999
ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
100100
Spec: v1alpha1.GitRepoSpec{Repo: repoURL, Branch: branch},
101101
},
102-
setupMocks: func(c *mocks.MockK8sClient, sw *mocks.MockStatusWriter, gf *gitmocks.MockGitFetcher, r *record.FakeRecorder) {
102+
setupMocks: func(c *mocks.MockK8sClient, sw *mocks.MockStatusWriter, gf *gitmocks.MockGitFetcher, r *events.FakeRecorder) {
103103
nsName := types.NamespacedName{Name: name, Namespace: namespace}
104104
c.EXPECT().Get(gomock.Any(), nsName, gomock.Any()).Times(2).DoAndReturn(func(_ context.Context, _ client.ObjectKey, obj *v1alpha1.GitRepo, _ ...client.GetOption) error {
105105
obj.Name = name
@@ -128,7 +128,7 @@ func TestPollGitRepo(t *testing.T) {
128128
ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
129129
Spec: v1alpha1.GitRepoSpec{Repo: repoURL, Branch: branch},
130130
},
131-
setupMocks: func(c *mocks.MockK8sClient, sw *mocks.MockStatusWriter, gf *gitmocks.MockGitFetcher, r *record.FakeRecorder) {
131+
setupMocks: func(c *mocks.MockK8sClient, sw *mocks.MockStatusWriter, gf *gitmocks.MockGitFetcher, r *events.FakeRecorder) {
132132
nsName := types.NamespacedName{Name: name, Namespace: namespace}
133133
c.EXPECT().Get(gomock.Any(), nsName, gomock.Any()).Times(3).DoAndReturn(func(_ context.Context, _ client.ObjectKey, obj *v1alpha1.GitRepo, _ ...client.GetOption) error {
134134
obj.Name = name
@@ -154,7 +154,7 @@ func TestPollGitRepo(t *testing.T) {
154154
mockClient := mocks.NewMockK8sClient(ctrl)
155155
mockStatusWriter := mocks.NewMockStatusWriter(ctrl)
156156
mockGitFetcher := gitmocks.NewMockGitFetcher(ctrl)
157-
recorder := record.NewFakeRecorder(10)
157+
recorder := events.NewFakeRecorder(10)
158158

159159
if tc.setupMocks != nil {
160160
tc.setupMocks(mockClient, mockStatusWriter, mockGitFetcher, recorder)

internal/cmd/controller/helmops/operator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ func (g *HelmOperator) Run(cmd *cobra.Command, args []string) error {
119119
Scheduler: sched,
120120
Workers: workers,
121121
ShardID: g.ShardID,
122-
Recorder: mgr.GetEventRecorderFor(fmt.Sprintf("fleet-helmops%s", shardIDSuffix)),
122+
Recorder: mgr.GetEventRecorder(fmt.Sprintf("fleet-helmops%s", shardIDSuffix)),
123123
}
124124

125125
helmOpStatusReconciler := &reconciler.HelmOpStatusReconciler{

internal/cmd/controller/helmops/reconciler/helmop_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"k8s.io/apimachinery/pkg/runtime"
1515
"k8s.io/apimachinery/pkg/types"
1616
errutil "k8s.io/apimachinery/pkg/util/errors"
17-
"k8s.io/client-go/tools/record"
17+
"k8s.io/client-go/tools/events"
1818
"k8s.io/client-go/util/retry"
1919
ctrl "sigs.k8s.io/controller-runtime"
2020
"sigs.k8s.io/controller-runtime/pkg/builder"
@@ -47,7 +47,7 @@ type HelmOpReconciler struct {
4747
Scheduler quartz.Scheduler
4848
Workers int
4949
ShardID string
50-
Recorder record.EventRecorder
50+
Recorder events.EventRecorder
5151
}
5252

5353
func (r *HelmOpReconciler) SetupWithManager(mgr ctrl.Manager) error {

0 commit comments

Comments
 (0)