@@ -20,11 +20,14 @@ import (
2020 . "github.com/onsi/ginkgo"
2121 . "github.com/onsi/gomega"
2222 appsv1 "k8s.io/api/apps/v1"
23+ autoscalingv1 "k8s.io/api/autoscaling/v1"
2324 corev1 "k8s.io/api/core/v1"
25+ "k8s.io/apimachinery/pkg/api/meta"
2426 metav1 "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() {
3538 var q workqueue.RateLimitingInterface
3639 var instance handler.EnqueueRequestForObject
3740 var pod * corev1.Pod
41+ var mapper meta.RESTMapper
3842 t := true
3943 BeforeEach (func () {
4044 q = controllertest.Queue {Interface : workqueue .New ()}
4145 instance = handler.EnqueueRequestForObject {}
4246 pod = & corev1.Pod {
4347 ObjectMeta : 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
4756 Describe ("EnqueueRequestForObject" , func () {
@@ -347,6 +356,7 @@ var _ = Describe("Eventhandler", func() {
347356 OwnerType : & appsv1.ReplicaSet {},
348357 }
349358 instance .InjectScheme (scheme .Scheme )
359+ instance .InjectMapper (mapper )
350360
351361 pod .OwnerReferences = []metav1.OwnerReference {
352362 {
@@ -372,6 +382,7 @@ var _ = Describe("Eventhandler", func() {
372382 OwnerType : & appsv1.ReplicaSet {},
373383 }
374384 instance .InjectScheme (scheme .Scheme )
385+ instance .InjectMapper (mapper )
375386
376387 pod .OwnerReferences = []metav1.OwnerReference {
377388 {
@@ -401,6 +412,7 @@ var _ = Describe("Eventhandler", func() {
401412 OwnerType : & appsv1.ReplicaSet {},
402413 }
403414 instance .InjectScheme (scheme .Scheme )
415+ instance .InjectMapper (mapper )
404416
405417 pod .OwnerReferences = []metav1.OwnerReference {
406418 {
@@ -439,6 +451,7 @@ var _ = Describe("Eventhandler", func() {
439451 OwnerType : & appsv1.ReplicaSet {},
440452 }
441453 instance .InjectScheme (scheme .Scheme )
454+ instance .InjectMapper (mapper )
442455
443456 pod .OwnerReferences = []metav1.OwnerReference {
444457 {
@@ -465,6 +478,7 @@ var _ = Describe("Eventhandler", func() {
465478 IsController : t ,
466479 }
467480 instance .InjectScheme (scheme .Scheme )
481+ instance .InjectMapper (mapper )
468482 pod .OwnerReferences = []metav1.OwnerReference {
469483 { // Wrong group
470484 Name : "foo1-parent" ,
@@ -488,14 +502,15 @@ var _ = Describe("Eventhandler", func() {
488502 It ("should enqueue a Request if there are owners matching Group " +
489503 "and Kind with a different version." , func () {
490504 instance := handler.EnqueueRequestForOwner {
491- OwnerType : & appsv1. ReplicaSet {},
505+ OwnerType : & autoscalingv1. HorizontalPodAutoscaler {},
492506 }
493507 instance .InjectScheme (scheme .Scheme )
508+ instance .InjectMapper (mapper )
494509 pod .OwnerReferences = []metav1.OwnerReference {
495510 {
496511 Name : "foo-parent" ,
497- Kind : "ReplicaSet " ,
498- APIVersion : "apps/v2 " ,
512+ Kind : "HorizontalPodAutoscaler " ,
513+ APIVersion : "autoscaling/v2beta1 " ,
499514 },
500515 }
501516 evt := event.CreateEvent {
@@ -510,11 +525,38 @@ var _ = Describe("Eventhandler", func() {
510525 NamespacedName : 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+
513554 It ("should not enqueue a Request if there are no owners." , func () {
514555 instance := handler.EnqueueRequestForOwner {
515556 OwnerType : & appsv1.ReplicaSet {},
516557 }
517558 instance .InjectScheme (scheme .Scheme )
559+ instance .InjectMapper (mapper )
518560 evt := event.CreateEvent {
519561 Object : pod ,
520562 Meta : pod .GetObjectMeta (),
@@ -531,6 +573,7 @@ var _ = Describe("Eventhandler", func() {
531573 IsController : t ,
532574 }
533575 instance .InjectScheme (scheme .Scheme )
576+ instance .InjectMapper (mapper )
534577 pod .OwnerReferences = []metav1.OwnerReference {
535578 {
536579 Name : "foo1-parent" ,
@@ -577,6 +620,7 @@ var _ = Describe("Eventhandler", func() {
577620 IsController : t ,
578621 }
579622 instance .InjectScheme (scheme .Scheme )
623+ instance .InjectMapper (mapper )
580624 pod .OwnerReferences = []metav1.OwnerReference {
581625 {
582626 Name : "foo1-parent" ,
@@ -608,6 +652,7 @@ var _ = Describe("Eventhandler", func() {
608652 IsController : t ,
609653 }
610654 instance .InjectScheme (scheme .Scheme )
655+ instance .InjectMapper (mapper )
611656 evt := event.CreateEvent {
612657 Object : pod ,
613658 Meta : pod .GetObjectMeta (),
@@ -623,6 +668,7 @@ var _ = Describe("Eventhandler", func() {
623668 OwnerType : & appsv1.ReplicaSet {},
624669 }
625670 instance .InjectScheme (scheme .Scheme )
671+ instance .InjectMapper (mapper )
626672 pod .OwnerReferences = []metav1.OwnerReference {
627673 {
628674 Name : "foo1-parent" ,
@@ -665,6 +711,7 @@ var _ = Describe("Eventhandler", func() {
665711 OwnerType : & appsv1.ReplicaSet {},
666712 }
667713 instance .InjectScheme (scheme .Scheme )
714+ instance .InjectMapper (mapper )
668715 pod .OwnerReferences = []metav1.OwnerReference {
669716 {
670717 Name : "foo1-parent" ,
@@ -686,6 +733,7 @@ var _ = Describe("Eventhandler", func() {
686733 OwnerType : & metav1.ListOptions {},
687734 }
688735 instance .InjectScheme (scheme .Scheme )
736+ instance .InjectMapper (mapper )
689737 pod .OwnerReferences = []metav1.OwnerReference {
690738 {
691739 Name : "foo1-parent" ,
@@ -707,6 +755,7 @@ var _ = Describe("Eventhandler", func() {
707755 OwnerType : & controllertest.ErrorType {},
708756 }
709757 instance .InjectScheme (scheme .Scheme )
758+ instance .InjectMapper (mapper )
710759 pod .OwnerReferences = []metav1.OwnerReference {
711760 {
712761 Name : "foo1-parent" ,
@@ -727,6 +776,7 @@ var _ = Describe("Eventhandler", func() {
727776 It ("should do nothing." , func () {
728777 instance := handler.EnqueueRequestForOwner {}
729778 instance .InjectScheme (scheme .Scheme )
779+ instance .InjectMapper (mapper )
730780 pod .OwnerReferences = []metav1.OwnerReference {
731781 {
732782 Name : "foo1-parent" ,
@@ -749,6 +799,7 @@ var _ = Describe("Eventhandler", func() {
749799 OwnerType : & appsv1.ReplicaSet {},
750800 }
751801 instance .InjectScheme (scheme .Scheme )
802+ instance .InjectMapper (mapper )
752803 pod .OwnerReferences = []metav1.OwnerReference {
753804 {
754805 Name : "foo1-parent" ,
0 commit comments