@@ -23,12 +23,11 @@ import (
2323 corev1 "k8s.io/api/core/v1"
2424 eventsv1 "k8s.io/api/events/v1"
2525 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26+ "k8s.io/apimachinery/pkg/fields"
2627 "k8s.io/apimachinery/pkg/watch"
27- "k8s.io/client-go/kubernetes"
2828 "k8s.io/client-go/kubernetes/scheme"
2929 ref "k8s.io/client-go/tools/reference"
3030 "sigs.k8s.io/controller-runtime/pkg/controller"
31- "sigs.k8s.io/controller-runtime/pkg/envtest"
3231 "sigs.k8s.io/controller-runtime/pkg/handler"
3332 "sigs.k8s.io/controller-runtime/pkg/manager"
3433 "sigs.k8s.io/controller-runtime/pkg/reconcile"
@@ -46,13 +45,15 @@ var _ = Describe("recorder", func() {
4645 Expect (err ).NotTo (HaveOccurred ())
4746
4847 By ("Creating the Controller" )
49- recorder := cm .GetEventRecorderFor ("test-deprecated-recorder" ) //nolint:staticcheck
48+ deprecatedRecorder := cm .GetEventRecorderFor ("test-deprecated-recorder" ) //nolint:staticcheck
49+ recorder := cm .GetEventRecorder ("test-deprecated-recorder" )
5050 instance , err := controller .New ("foo-controller" , cm , controller.Options {
5151 Reconciler : reconcile .Func (
5252 func (ctx context.Context , request reconcile.Request ) (reconcile.Result , error ) {
5353 dp , err := clientset .AppsV1 ().Deployments (request .Namespace ).Get (ctx , request .Name , metav1.GetOptions {})
5454 Expect (err ).NotTo (HaveOccurred ())
55- recorder .Event (dp , corev1 .EventTypeNormal , "test-reason" , "test-msg" )
55+ deprecatedRecorder .Event (dp , corev1 .EventTypeNormal , "deprecated-test-reason" , "deprecated-test-msg" )
56+ recorder .Eventf (dp , nil , corev1 .EventTypeNormal , "test-reason" , "test-action" , "test-note" )
5657 return reconcile.Result {}, nil
5758 }),
5859 })
@@ -92,107 +93,41 @@ var _ = Describe("recorder", func() {
9293 deployment , err = clientset .AppsV1 ().Deployments ("default" ).Create (ctx , deployment , metav1.CreateOptions {})
9394 Expect (err ).NotTo (HaveOccurred ())
9495
95- By ("Validate event is published as expected" )
96- evtWatcher , err := clientset .CoreV1 ().Events ("default" ).Watch (ctx , metav1.ListOptions {})
96+ // watch both deprecated and new events based on the reason
97+ By ("Validate deprecated event is published as expected" )
98+ deprecatedEvtWatcher , err := clientset .CoreV1 ().Events ("default" ).Watch (ctx ,
99+ metav1.ListOptions {FieldSelector : fields .OneTermEqualSelector ("reason" , "deprecated-test-reason" ).String ()})
97100 Expect (err ).NotTo (HaveOccurred ())
98101
99- resultEvent := <- evtWatcher .ResultChan ()
102+ resultEvent := <- deprecatedEvtWatcher .ResultChan ()
100103
101104 Expect (resultEvent .Type ).To (Equal (watch .Added ))
102- evt , isEvent := resultEvent .Object .(* corev1.Event )
105+ deprecatedEvt , isEvent := resultEvent .Object .(* corev1.Event )
103106 Expect (isEvent ).To (BeTrue ())
104107
105108 dpRef , err := ref .GetReference (scheme .Scheme , deployment )
106109 Expect (err ).NotTo (HaveOccurred ())
107110
108- Expect (evt .InvolvedObject ).To (Equal (* dpRef ))
109- Expect (evt .Type ).To (Equal (corev1 .EventTypeNormal ))
110- Expect (evt .Reason ).To (Equal ("test-reason" ))
111- Expect (evt .Message ).To (Equal ("test-msg" ))
112- })
113- })
114-
115- Describe ("recorder" , func () {
116- It ("should publish events" , func (ctx SpecContext ) {
117- By ("Creating the Manager" )
118- // this test needs its own env for now to not interfere with the previous one.
119- // Once the deprecated API is removed this can be removed.
120- testenv := & envtest.Environment {}
121-
122- cfg , err := testenv .Start ()
123- Expect (err ).NotTo (HaveOccurred ())
124- defer testenv .Stop () //nolint:errcheck
125-
126- clientset , err := kubernetes .NewForConfig (cfg )
127- Expect (err ).NotTo (HaveOccurred ())
128-
129- cm , err := manager .New (cfg , manager.Options {})
130- Expect (err ).NotTo (HaveOccurred ())
131-
132- By ("Creating the Controller" )
133- recorder := cm .GetEventRecorder ("test-recorder" )
134- instance , err := controller .New ("bar-controller" , cm , controller.Options {
135- Reconciler : reconcile .Func (
136- func (ctx context.Context , request reconcile.Request ) (reconcile.Result , error ) {
137- dp , err := clientset .AppsV1 ().Deployments (request .Namespace ).Get (ctx , request .Name , metav1.GetOptions {})
138- Expect (err ).NotTo (HaveOccurred ())
139- recorder .Eventf (dp , nil , corev1 .EventTypeNormal , "test-reason" , "test-action" , "test-msg" )
140- return reconcile.Result {}, nil
141- }),
142- })
143- Expect (err ).NotTo (HaveOccurred ())
144-
145- By ("Watching Resources" )
146- err = instance .Watch (source .Kind (cm .GetCache (), & appsv1.Deployment {}, & handler.TypedEnqueueRequestForObject [* appsv1.Deployment ]{}))
147- Expect (err ).NotTo (HaveOccurred ())
148-
149- By ("Starting the Manager" )
150- go func () {
151- defer GinkgoRecover ()
152- Expect (cm .Start (ctx )).NotTo (HaveOccurred ())
153- }()
154-
155- deployment := & appsv1.Deployment {
156- ObjectMeta : metav1.ObjectMeta {Name : "deployment-name" },
157- Spec : appsv1.DeploymentSpec {
158- Selector : & metav1.LabelSelector {
159- MatchLabels : map [string ]string {"foo" : "bar" },
160- },
161- Template : corev1.PodTemplateSpec {
162- ObjectMeta : metav1.ObjectMeta {Labels : map [string ]string {"foo" : "bar" }},
163- Spec : corev1.PodSpec {
164- Containers : []corev1.Container {
165- {
166- Name : "nginx" ,
167- Image : "nginx" ,
168- },
169- },
170- },
171- },
172- },
173- }
174-
175- By ("Invoking Reconciling" )
176- deployment , err = clientset .AppsV1 ().Deployments ("default" ).Create (ctx , deployment , metav1.CreateOptions {})
177- Expect (err ).NotTo (HaveOccurred ())
111+ Expect (deprecatedEvt .InvolvedObject ).To (Equal (* dpRef ))
112+ Expect (deprecatedEvt .Type ).To (Equal (corev1 .EventTypeNormal ))
113+ Expect (deprecatedEvt .Reason ).To (Equal ("deprecated-test-reason" ))
114+ Expect (deprecatedEvt .Message ).To (Equal ("deprecated-test-msg" ))
178115
179116 By ("Validate event is published as expected" )
180- evtWatcher , err := clientset .EventsV1 ().Events ("default" ).Watch (ctx , metav1.ListOptions {})
117+ evtWatcher , err := clientset .EventsV1 ().Events ("default" ).Watch (ctx ,
118+ metav1.ListOptions {FieldSelector : fields .OneTermEqualSelector ("reason" , "test-reason" ).String ()})
181119 Expect (err ).NotTo (HaveOccurred ())
182120
183- resultEvent : = <- evtWatcher .ResultChan ()
121+ resultEvent = <- evtWatcher .ResultChan ()
184122
185123 Expect (resultEvent .Type ).To (Equal (watch .Added ))
186124 evt , isEvent := resultEvent .Object .(* eventsv1.Event )
187125 Expect (isEvent ).To (BeTrue ())
188126
189- dpRef , err := ref .GetReference (scheme .Scheme , deployment )
190- Expect (err ).NotTo (HaveOccurred ())
191-
192127 Expect (evt .Regarding ).To (Equal (* dpRef ))
193128 Expect (evt .Type ).To (Equal (corev1 .EventTypeNormal ))
194129 Expect (evt .Reason ).To (Equal ("test-reason" ))
195- Expect (evt .Note ).To (Equal ("test-msg " ))
130+ Expect (evt .Note ).To (Equal ("test-note " ))
196131 })
197132 })
198133})
0 commit comments