@@ -20,11 +20,14 @@ import (
2020. "github.com/onsi/ginkgo"
2121. "github.com/onsi/gomega"
2222appsv1 "k8s.io/api/apps/v1"
23+ autoscalingv1 "k8s.io/api/autoscaling/v1"
2324corev1 "k8s.io/api/core/v1"
25+ "k8s.io/apimachinery/pkg/api/meta"
2426metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2527"k8s.io/apimachinery/pkg/types"
2628"k8s.io/client-go/kubernetes/scheme"
2729"k8s.io/client-go/util/workqueue"
30+ "sigs.k8s.io/controller-runtime/pkg/client/apiutil"
2831"sigs.k8s.io/controller-runtime/pkg/controller/controllertest"
2932"sigs.k8s.io/controller-runtime/pkg/event"
3033"sigs.k8s.io/controller-runtime/pkg/handler"
@@ -35,13 +38,19 @@ var _ = Describe("Eventhandler", func() {
3538var q workqueue.RateLimitingInterface
3639var instance handler.EnqueueRequestForObject
3740var pod * corev1.Pod
41+ var mapper meta.RESTMapper
3842t := true
3943BeforeEach (func () {
4044q = controllertest.Queue {Interface : workqueue .New ()}
4145instance = handler.EnqueueRequestForObject {}
4246pod = & corev1.Pod {
4347ObjectMeta : metav1.ObjectMeta {Namespace : "biz" , Name : "baz" },
4448}
49+ Expect (cfg ).NotTo (BeNil ())
50+
51+ var err error
52+ mapper , err = apiutil .NewDiscoveryRESTMapper (cfg )
53+ Expect (err ).ShouldNot (HaveOccurred ())
4554})
4655
4756Describe ("EnqueueRequestForObject" , func () {
@@ -347,6 +356,7 @@ var _ = Describe("Eventhandler", func() {
347356OwnerType : & appsv1.ReplicaSet {},
348357}
349358instance .InjectScheme (scheme .Scheme )
359+ instance .InjectMapper (mapper )
350360
351361pod .OwnerReferences = []metav1.OwnerReference {
352362{
@@ -372,6 +382,7 @@ var _ = Describe("Eventhandler", func() {
372382OwnerType : & appsv1.ReplicaSet {},
373383}
374384instance .InjectScheme (scheme .Scheme )
385+ instance .InjectMapper (mapper )
375386
376387pod .OwnerReferences = []metav1.OwnerReference {
377388{
@@ -401,6 +412,7 @@ var _ = Describe("Eventhandler", func() {
401412OwnerType : & appsv1.ReplicaSet {},
402413}
403414instance .InjectScheme (scheme .Scheme )
415+ instance .InjectMapper (mapper )
404416
405417pod .OwnerReferences = []metav1.OwnerReference {
406418{
@@ -439,6 +451,7 @@ var _ = Describe("Eventhandler", func() {
439451OwnerType : & appsv1.ReplicaSet {},
440452}
441453instance .InjectScheme (scheme .Scheme )
454+ instance .InjectMapper (mapper )
442455
443456pod .OwnerReferences = []metav1.OwnerReference {
444457{
@@ -465,6 +478,7 @@ var _ = Describe("Eventhandler", func() {
465478IsController : t ,
466479}
467480instance .InjectScheme (scheme .Scheme )
481+ instance .InjectMapper (mapper )
468482pod .OwnerReferences = []metav1.OwnerReference {
469483{ // Wrong group
470484Name : "foo1-parent" ,
@@ -488,14 +502,15 @@ var _ = Describe("Eventhandler", func() {
488502It ("should enqueue a Request if there are owners matching Group " +
489503"and Kind with a different version." , func () {
490504instance := handler.EnqueueRequestForOwner {
491- OwnerType : & appsv1. ReplicaSet {},
505+ OwnerType : & autoscalingv1. HorizontalPodAutoscaler {},
492506}
493507instance .InjectScheme (scheme .Scheme )
508+ instance .InjectMapper (mapper )
494509pod .OwnerReferences = []metav1.OwnerReference {
495510{
496511Name : "foo-parent" ,
497- Kind : "ReplicaSet " ,
498- APIVersion : "apps/v2 " ,
512+ Kind : "HorizontalPodAutoscaler " ,
513+ APIVersion : "autoscaling/v2beta1 " ,
499514},
500515}
501516evt := event.CreateEvent {
@@ -510,11 +525,38 @@ var _ = Describe("Eventhandler", func() {
510525NamespacedName : types.NamespacedName {Namespace : pod .GetNamespace (), Name : "foo-parent" }}))
511526})
512527
528+ It ("should enqueue a Request for a owner that is cluster scoped" , func () {
529+ instance := handler.EnqueueRequestForOwner {
530+ OwnerType : & corev1.Node {},
531+ }
532+ instance .InjectScheme (scheme .Scheme )
533+ instance .InjectMapper (mapper )
534+ pod .OwnerReferences = []metav1.OwnerReference {
535+ {
536+ Name : "node-1" ,
537+ Kind : "Node" ,
538+ APIVersion : "v1" ,
539+ },
540+ }
541+ evt := event.CreateEvent {
542+ Object : pod ,
543+ Meta : pod .GetObjectMeta (),
544+ }
545+ instance .Create (evt , q )
546+ Expect (q .Len ()).To (Equal (1 ))
547+
548+ i , _ := q .Get ()
549+ Expect (i ).To (Equal (reconcile.Request {
550+ NamespacedName : types.NamespacedName {Namespace : "" , Name : "node-1" }}))
551+
552+ })
553+
513554It ("should not enqueue a Request if there are no owners." , func () {
514555instance := handler.EnqueueRequestForOwner {
515556OwnerType : & appsv1.ReplicaSet {},
516557}
517558instance .InjectScheme (scheme .Scheme )
559+ instance .InjectMapper (mapper )
518560evt := event.CreateEvent {
519561Object : pod ,
520562Meta : pod .GetObjectMeta (),
@@ -531,6 +573,7 @@ var _ = Describe("Eventhandler", func() {
531573IsController : t ,
532574}
533575instance .InjectScheme (scheme .Scheme )
576+ instance .InjectMapper (mapper )
534577pod .OwnerReferences = []metav1.OwnerReference {
535578{
536579Name : "foo1-parent" ,
@@ -577,6 +620,7 @@ var _ = Describe("Eventhandler", func() {
577620IsController : t ,
578621}
579622instance .InjectScheme (scheme .Scheme )
623+ instance .InjectMapper (mapper )
580624pod .OwnerReferences = []metav1.OwnerReference {
581625{
582626Name : "foo1-parent" ,
@@ -608,6 +652,7 @@ var _ = Describe("Eventhandler", func() {
608652IsController : t ,
609653}
610654instance .InjectScheme (scheme .Scheme )
655+ instance .InjectMapper (mapper )
611656evt := event.CreateEvent {
612657Object : pod ,
613658Meta : pod .GetObjectMeta (),
@@ -623,6 +668,7 @@ var _ = Describe("Eventhandler", func() {
623668OwnerType : & appsv1.ReplicaSet {},
624669}
625670instance .InjectScheme (scheme .Scheme )
671+ instance .InjectMapper (mapper )
626672pod .OwnerReferences = []metav1.OwnerReference {
627673{
628674Name : "foo1-parent" ,
@@ -665,6 +711,7 @@ var _ = Describe("Eventhandler", func() {
665711OwnerType : & appsv1.ReplicaSet {},
666712}
667713instance .InjectScheme (scheme .Scheme )
714+ instance .InjectMapper (mapper )
668715pod .OwnerReferences = []metav1.OwnerReference {
669716{
670717Name : "foo1-parent" ,
@@ -686,6 +733,7 @@ var _ = Describe("Eventhandler", func() {
686733OwnerType : & metav1.ListOptions {},
687734}
688735instance .InjectScheme (scheme .Scheme )
736+ instance .InjectMapper (mapper )
689737pod .OwnerReferences = []metav1.OwnerReference {
690738{
691739Name : "foo1-parent" ,
@@ -707,6 +755,7 @@ var _ = Describe("Eventhandler", func() {
707755OwnerType : & controllertest.ErrorType {},
708756}
709757instance .InjectScheme (scheme .Scheme )
758+ instance .InjectMapper (mapper )
710759pod .OwnerReferences = []metav1.OwnerReference {
711760{
712761Name : "foo1-parent" ,
@@ -727,6 +776,7 @@ var _ = Describe("Eventhandler", func() {
727776It ("should do nothing." , func () {
728777instance := handler.EnqueueRequestForOwner {}
729778instance .InjectScheme (scheme .Scheme )
779+ instance .InjectMapper (mapper )
730780pod .OwnerReferences = []metav1.OwnerReference {
731781{
732782Name : "foo1-parent" ,
@@ -749,6 +799,7 @@ var _ = Describe("Eventhandler", func() {
749799OwnerType : & appsv1.ReplicaSet {},
750800}
751801instance .InjectScheme (scheme .Scheme )
802+ instance .InjectMapper (mapper )
752803pod .OwnerReferences = []metav1.OwnerReference {
753804{
754805Name : "foo1-parent" ,
0 commit comments