@@ -14,6 +14,7 @@ import (
14
14
"github.com/stretchr/testify/mock"
15
15
extensions "k8s.io/api/extensions/v1beta1"
16
16
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
17
+ "k8s.io/apimachinery/pkg/types"
17
18
"k8s.io/apimachinery/pkg/util/intstr"
18
19
)
19
20
@@ -24,9 +25,10 @@ type TGReconcileCall struct {
24
25
Err error
25
26
}
26
27
27
- type GetTargetGroupsByLoadBalancerCall struct {
28
- LbArn string
29
- TargetGroups []* elbv2.TargetGroup
28
+ type GetResourcesByFiltersCall struct {
29
+ TagFilters map [string ][]string
30
+ ResourceType string
31
+ Arns []string
30
32
Err error
31
33
}
32
34
@@ -533,13 +535,12 @@ func TestDefaultGroupController_Reconcile(t *testing.T) {
533
535
}
534
536
535
537
func TestDefaultGroupController_GC (t * testing.T ) {
536
- lbArn := "lbArn"
537
538
for _ , tc := range []struct {
538
- Name string
539
- TGGroup TargetGroupGroup
540
- GetTargetGroupsByLoadBalancerCall * GetTargetGroupsByLoadBalancerCall
541
- DeleteTargetGroupByArnCalls []DeleteTargetGroupByArnCall
542
- ExpectedError error
539
+ Name string
540
+ TGGroup TargetGroupGroup
541
+ GetResourcesByFiltersCall * GetResourcesByFiltersCall
542
+ DeleteTargetGroupByArnCalls []DeleteTargetGroupByArnCall
543
+ ExpectedError error
543
544
}{
544
545
{
545
546
Name : "GC succeeds" ,
@@ -550,14 +551,12 @@ func TestDefaultGroupController_GC(t *testing.T) {
550
551
ServicePort : intstr .FromInt (80 ),
551
552
}: {Arn : "arn1" },
552
553
},
554
+ selector : map [string ]string {"key1" : "value1" , "key2" : "value2" },
553
555
},
554
- GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
555
- LbArn : lbArn ,
556
- TargetGroups : []* elbv2.TargetGroup {
557
- {TargetGroupArn : aws .String ("arn1" )},
558
- {TargetGroupArn : aws .String ("arn2" )},
559
- {TargetGroupArn : aws .String ("arn3" )},
560
- },
556
+ GetResourcesByFiltersCall : & GetResourcesByFiltersCall {
557
+ TagFilters : map [string ][]string {"key1" : {"value1" }, "key2" : {"value2" }},
558
+ ResourceType : aws .ResourceTypeEnumELBTargetGroup ,
559
+ Arns : []string {"arn1" , "arn2" , "arn3" },
561
560
},
562
561
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
563
562
{
@@ -578,14 +577,12 @@ func TestDefaultGroupController_GC(t *testing.T) {
578
577
}: {Arn : "arn1" },
579
578
},
580
579
externalTGARNs : []string {"arn3" },
580
+ selector : map [string ]string {"key1" : "value1" , "key2" : "value2" },
581
581
},
582
- GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
583
- LbArn : lbArn ,
584
- TargetGroups : []* elbv2.TargetGroup {
585
- {TargetGroupArn : aws .String ("arn1" )},
586
- {TargetGroupArn : aws .String ("arn2" )},
587
- {TargetGroupArn : aws .String ("arn3" )},
588
- },
582
+ GetResourcesByFiltersCall : & GetResourcesByFiltersCall {
583
+ TagFilters : map [string ][]string {"key1" : {"value1" }, "key2" : {"value2" }},
584
+ ResourceType : aws .ResourceTypeEnumELBTargetGroup ,
585
+ Arns : []string {"arn1" , "arn2" , "arn3" },
589
586
},
590
587
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
591
588
{
@@ -602,12 +599,14 @@ func TestDefaultGroupController_GC(t *testing.T) {
602
599
ServicePort : intstr .FromInt (80 ),
603
600
}: {Arn : "arn1" },
604
601
},
602
+ selector : map [string ]string {"key1" : "value1" , "key2" : "value2" },
605
603
},
606
- GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
607
- LbArn : lbArn ,
608
- Err : errors .New ("GetTargetGroupsByLbArn" ),
604
+ GetResourcesByFiltersCall : & GetResourcesByFiltersCall {
605
+ TagFilters : map [string ][]string {"key1" : {"value1" }, "key2" : {"value2" }},
606
+ ResourceType : aws .ResourceTypeEnumELBTargetGroup ,
607
+ Err : errors .New ("GetResourcesByFiltersCall" ),
609
608
},
610
- ExpectedError : errors .New ("failed to get targetGroups due to GetTargetGroupsByLbArn " ),
609
+ ExpectedError : errors .New ("failed to get targetGroups due to GetResourcesByFiltersCall " ),
611
610
},
612
611
{
613
612
Name : "GC failed when deleting targetGroup" ,
@@ -618,14 +617,12 @@ func TestDefaultGroupController_GC(t *testing.T) {
618
617
ServicePort : intstr .FromInt (80 ),
619
618
}: {Arn : "arn1" },
620
619
},
620
+ selector : map [string ]string {"key1" : "value1" , "key2" : "value2" },
621
621
},
622
- GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
623
- LbArn : lbArn ,
624
- TargetGroups : []* elbv2.TargetGroup {
625
- {TargetGroupArn : aws .String ("arn1" )},
626
- {TargetGroupArn : aws .String ("arn2" )},
627
- {TargetGroupArn : aws .String ("arn3" )},
628
- },
622
+ GetResourcesByFiltersCall : & GetResourcesByFiltersCall {
623
+ TagFilters : map [string ][]string {"key1" : {"value1" }, "key2" : {"value2" }},
624
+ ResourceType : aws .ResourceTypeEnumELBTargetGroup ,
625
+ Arns : []string {"arn1" , "arn2" , "arn3" },
629
626
},
630
627
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
631
628
{
@@ -638,10 +635,9 @@ func TestDefaultGroupController_GC(t *testing.T) {
638
635
} {
639
636
ctx := context .Background ()
640
637
cloud := & mocks.CloudAPI {}
641
- if tc .GetTargetGroupsByLoadBalancerCall != nil {
642
- cloud .On ("GetTargetGroupsByLbArn " , ctx , lbArn ).Return (tc .GetTargetGroupsByLoadBalancerCall . TargetGroups , tc .GetTargetGroupsByLoadBalancerCall .Err )
638
+ if tc .GetResourcesByFiltersCall != nil {
639
+ cloud .On ("GetResourcesByFilters " , tc . GetResourcesByFiltersCall . TagFilters , tc . GetResourcesByFiltersCall . ResourceType ).Return (tc .GetResourcesByFiltersCall . Arns , tc .GetResourcesByFiltersCall .Err )
643
640
}
644
-
645
641
for _ , call := range tc .DeleteTargetGroupByArnCalls {
646
642
cloud .On ("DeleteTargetGroupByArn" , ctx , call .Arn ).Return (call .Err )
647
643
}
@@ -657,7 +653,7 @@ func TestDefaultGroupController_GC(t *testing.T) {
657
653
tgController : mockTGController ,
658
654
}
659
655
660
- err := controller .GC (context .Background (), lbArn , tc .TGGroup )
656
+ err := controller .GC (context .Background (), tc .TGGroup )
661
657
assert .Equal (t , tc .ExpectedError , err )
662
658
cloud .AssertExpectations (t )
663
659
mockNameTagGen .AssertExpectations (t )
@@ -666,22 +662,29 @@ func TestDefaultGroupController_GC(t *testing.T) {
666
662
}
667
663
668
664
func TestDefaultGroupController_Delete (t * testing.T ) {
669
- lbArn := "lbArn"
670
665
for _ , tc := range []struct {
671
- Name string
672
- GetTargetGroupsByLoadBalancerCall * GetTargetGroupsByLoadBalancerCall
673
- DeleteTargetGroupByArnCalls []DeleteTargetGroupByArnCall
674
- ExpectedError error
666
+ Name string
667
+ IngressKey types.NamespacedName
668
+ TagTGGroupCall * TagTGGroupCall
669
+ GetResourcesByFiltersCall * GetResourcesByFiltersCall
670
+ DeleteTargetGroupByArnCalls []DeleteTargetGroupByArnCall
671
+ ExpectedError error
675
672
}{
676
673
{
677
674
Name : "DELETE succeeds" ,
678
- GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
679
- LbArn : lbArn ,
680
- TargetGroups : []* elbv2.TargetGroup {
681
- {TargetGroupArn : aws .String ("arn1" )},
682
- {TargetGroupArn : aws .String ("arn2" )},
683
- {TargetGroupArn : aws .String ("arn3" )},
684
- },
675
+ IngressKey : types.NamespacedName {
676
+ Namespace : "namespace" ,
677
+ Name : "ingress" ,
678
+ },
679
+ TagTGGroupCall : & TagTGGroupCall {
680
+ Namespace : "namespace" ,
681
+ IngressName : "ingress" ,
682
+ Tags : map [string ]string {"key1" : "value1" , "key2" : "value2" },
683
+ },
684
+ GetResourcesByFiltersCall : & GetResourcesByFiltersCall {
685
+ TagFilters : map [string ][]string {"key1" : {"value1" }, "key2" : {"value2" }},
686
+ ResourceType : aws .ResourceTypeEnumELBTargetGroup ,
687
+ Arns : []string {"arn1" , "arn2" , "arn3" },
685
688
},
686
689
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
687
690
{
@@ -697,21 +700,37 @@ func TestDefaultGroupController_Delete(t *testing.T) {
697
700
},
698
701
{
699
702
Name : "DELETE failed when fetch current targetGroups" ,
700
- GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
701
- LbArn : lbArn ,
702
- Err : errors . New ( "GetTargetGroupsByLbArn" ) ,
703
+ IngressKey : types. NamespacedName {
704
+ Namespace : "namespace" ,
705
+ Name : "ingress" ,
703
706
},
704
- ExpectedError : errors .New ("failed to get targetGroups due to GetTargetGroupsByLbArn" ),
707
+ TagTGGroupCall : & TagTGGroupCall {
708
+ Namespace : "namespace" ,
709
+ IngressName : "ingress" ,
710
+ Tags : map [string ]string {"key1" : "value1" , "key2" : "value2" },
711
+ },
712
+ GetResourcesByFiltersCall : & GetResourcesByFiltersCall {
713
+ TagFilters : map [string ][]string {"key1" : {"value1" }, "key2" : {"value2" }},
714
+ ResourceType : aws .ResourceTypeEnumELBTargetGroup ,
715
+ Err : errors .New ("GetResourcesByFiltersCall" ),
716
+ },
717
+ ExpectedError : errors .New ("failed to get targetGroups due to GetResourcesByFiltersCall" ),
705
718
},
706
719
{
707
720
Name : "DELETE failed when deleting targetGroup" ,
708
- GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
709
- LbArn : lbArn ,
710
- TargetGroups : []* elbv2.TargetGroup {
711
- {TargetGroupArn : aws .String ("arn1" )},
712
- {TargetGroupArn : aws .String ("arn2" )},
713
- {TargetGroupArn : aws .String ("arn3" )},
714
- },
721
+ IngressKey : types.NamespacedName {
722
+ Namespace : "namespace" ,
723
+ Name : "ingress" ,
724
+ },
725
+ TagTGGroupCall : & TagTGGroupCall {
726
+ Namespace : "namespace" ,
727
+ IngressName : "ingress" ,
728
+ Tags : map [string ]string {"key1" : "value1" , "key2" : "value2" },
729
+ },
730
+ GetResourcesByFiltersCall : & GetResourcesByFiltersCall {
731
+ TagFilters : map [string ][]string {"key1" : {"value1" }, "key2" : {"value2" }},
732
+ ResourceType : aws .ResourceTypeEnumELBTargetGroup ,
733
+ Arns : []string {"arn1" , "arn2" , "arn3" },
715
734
},
716
735
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
717
736
{
@@ -724,13 +743,16 @@ func TestDefaultGroupController_Delete(t *testing.T) {
724
743
} {
725
744
ctx := context .Background ()
726
745
cloud := & mocks.CloudAPI {}
727
- if tc .GetTargetGroupsByLoadBalancerCall != nil {
728
- cloud .On ("GetTargetGroupsByLbArn " , ctx , lbArn ).Return (tc .GetTargetGroupsByLoadBalancerCall . TargetGroups , tc .GetTargetGroupsByLoadBalancerCall .Err )
746
+ if tc .GetResourcesByFiltersCall != nil {
747
+ cloud .On ("GetResourcesByFilters " , tc . GetResourcesByFiltersCall . TagFilters , tc . GetResourcesByFiltersCall . ResourceType ).Return (tc .GetResourcesByFiltersCall . Arns , tc .GetResourcesByFiltersCall .Err )
729
748
}
730
749
for _ , call := range tc .DeleteTargetGroupByArnCalls {
731
750
cloud .On ("DeleteTargetGroupByArn" , ctx , call .Arn ).Return (call .Err )
732
751
}
733
752
mockNameTagGen := & MockNameTagGenerator {}
753
+ if tc .TagTGGroupCall != nil {
754
+ mockNameTagGen .On ("TagTGGroup" , tc .TagTGGroupCall .Namespace , tc .TagTGGroupCall .IngressName ).Return (tc .TagTGGroupCall .Tags )
755
+ }
734
756
mockTGController := & MockController {}
735
757
for _ , call := range tc .DeleteTargetGroupByArnCalls {
736
758
mockTGController .On ("StopReconcilingPodConditionStatus" , call .Arn ).Return ()
@@ -742,7 +764,7 @@ func TestDefaultGroupController_Delete(t *testing.T) {
742
764
tgController : mockTGController ,
743
765
}
744
766
745
- err := controller .Delete (context .Background (), lbArn )
767
+ err := controller .Delete (context .Background (), tc . IngressKey )
746
768
assert .Equal (t , tc .ExpectedError , err )
747
769
cloud .AssertExpectations (t )
748
770
mockNameTagGen .AssertExpectations (t )
0 commit comments