@@ -67,6 +67,29 @@ func (m *MockedFakeEC2) expectDescribeSecurityGroups(clusterID, groupName string
67
67
}}).Return ([]* ec2.SecurityGroup {{Tags : tags }})
68
68
}
69
69
70
+ func (m * MockedFakeEC2 ) expectDescribeSecurityGroupsAll (clusterID string ) {
71
+ tags := []* ec2.Tag {
72
+ {Key : aws .String (TagNameKubernetesClusterLegacy ), Value : aws .String (clusterID )},
73
+ {Key : aws .String (fmt .Sprintf ("%s%s" , TagNameKubernetesClusterPrefix , clusterID )), Value : aws .String (ResourceLifecycleOwned )},
74
+ }
75
+
76
+ m .On ("DescribeSecurityGroups" , & ec2.DescribeSecurityGroupsInput {}).Return ([]* ec2.SecurityGroup {{
77
+ GroupId : aws .String ("sg-123456" ),
78
+ Tags : tags ,
79
+ }})
80
+ }
81
+
82
+ func (m * MockedFakeEC2 ) expectDescribeSecurityGroupsByFilter (clusterID , filterName string , filterValues ... string ) {
83
+ tags := []* ec2.Tag {
84
+ {Key : aws .String (TagNameKubernetesClusterLegacy ), Value : aws .String (clusterID )},
85
+ {Key : aws .String (fmt .Sprintf ("%s%s" , TagNameKubernetesClusterPrefix , clusterID )), Value : aws .String (ResourceLifecycleOwned )},
86
+ }
87
+
88
+ m .On ("DescribeSecurityGroups" , & ec2.DescribeSecurityGroupsInput {Filters : []* ec2.Filter {
89
+ newEc2Filter (filterName , filterValues ... ),
90
+ }}).Return ([]* ec2.SecurityGroup {{Tags : tags }})
91
+ }
92
+
70
93
func (m * MockedFakeEC2 ) DescribeSecurityGroups (request * ec2.DescribeSecurityGroupsInput ) ([]* ec2.SecurityGroup , error ) {
71
94
args := m .Called (request )
72
95
return args .Get (0 ).([]* ec2.SecurityGroup ), nil
@@ -84,7 +107,11 @@ func (m *MockedFakeELB) DescribeLoadBalancers(input *elb.DescribeLoadBalancersIn
84
107
85
108
func (m * MockedFakeELB ) expectDescribeLoadBalancers (loadBalancerName string ) {
86
109
m .On ("DescribeLoadBalancers" , & elb.DescribeLoadBalancersInput {LoadBalancerNames : []* string {aws .String (loadBalancerName )}}).Return (& elb.DescribeLoadBalancersOutput {
87
- LoadBalancerDescriptions : []* elb.LoadBalancerDescription {{}},
110
+ LoadBalancerDescriptions : []* elb.LoadBalancerDescription {
111
+ {
112
+ SecurityGroups : []* string {aws .String ("sg-123456" )},
113
+ },
114
+ },
88
115
})
89
116
}
90
117
@@ -1647,6 +1674,9 @@ func TestDescribeLoadBalancerOnDelete(t *testing.T) {
1647
1674
awsServices := newMockedFakeAWSServices (TestClusterID )
1648
1675
c , _ := newAWSCloud (config.CloudConfig {}, awsServices )
1649
1676
awsServices .elb .(* MockedFakeELB ).expectDescribeLoadBalancers ("aid" )
1677
+ awsServices .ec2 .(* MockedFakeEC2 ).expectDescribeSecurityGroupsByFilter (TestClusterID , "group-id" , "sg-123456" )
1678
+ awsServices .ec2 .(* MockedFakeEC2 ).expectDescribeSecurityGroupsAll (TestClusterID )
1679
+ awsServices .ec2 .(* MockedFakeEC2 ).expectDescribeSecurityGroupsByFilter (TestClusterID , "ip-permission.group-id" , "sg-123456" )
1650
1680
1651
1681
c .EnsureLoadBalancerDeleted (context .TODO (), TestClusterName , & v1.Service {ObjectMeta : metav1.ObjectMeta {Name : "myservice" , UID : "id" }})
1652
1682
}
@@ -1655,6 +1685,8 @@ func TestDescribeLoadBalancerOnUpdate(t *testing.T) {
1655
1685
awsServices := newMockedFakeAWSServices (TestClusterID )
1656
1686
c , _ := newAWSCloud (config.CloudConfig {}, awsServices )
1657
1687
awsServices .elb .(* MockedFakeELB ).expectDescribeLoadBalancers ("aid" )
1688
+ awsServices .ec2 .(* MockedFakeEC2 ).expectDescribeSecurityGroupsAll (TestClusterID )
1689
+ awsServices .ec2 .(* MockedFakeEC2 ).expectDescribeSecurityGroupsByFilter (TestClusterID , "ip-permission.group-id" , "sg-123456" )
1658
1690
1659
1691
c .UpdateLoadBalancer (context .TODO (), TestClusterName , & v1.Service {ObjectMeta : metav1.ObjectMeta {Name : "myservice" , UID : "id" }}, []* v1.Node {})
1660
1692
}
@@ -3121,8 +3153,9 @@ func TestAzToRegion(t *testing.T) {
3121
3153
3122
3154
func TestCloud_sortELBSecurityGroupList (t * testing.T ) {
3123
3155
type args struct {
3124
- securityGroupIDs []string
3125
- annotations map [string ]string
3156
+ securityGroupIDs []string
3157
+ annotations map [string ]string
3158
+ taggedLBSecurityGroups map [string ]struct {}
3126
3159
}
3127
3160
tests := []struct {
3128
3161
name string
@@ -3168,11 +3201,21 @@ func TestCloud_sortELBSecurityGroupList(t *testing.T) {
3168
3201
},
3169
3202
wantSecurityGroupIDs : []string {"sg-3" , "sg-2" , "sg-1" , "sg-4" , "sg-6" , "sg-5" },
3170
3203
},
3204
+ {
3205
+ name : "with an untagged, and unknown security group" ,
3206
+ args : args {
3207
+ securityGroupIDs : []string {"sg-2" , "sg-1" },
3208
+ taggedLBSecurityGroups : map [string ]struct {}{
3209
+ "sg-1" : {},
3210
+ },
3211
+ },
3212
+ wantSecurityGroupIDs : []string {"sg-1" , "sg-2" },
3213
+ },
3171
3214
}
3172
3215
for _ , tt := range tests {
3173
3216
t .Run (tt .name , func (t * testing.T ) {
3174
3217
c := & Cloud {}
3175
- c .sortELBSecurityGroupList (tt .args .securityGroupIDs , tt .args .annotations )
3218
+ c .sortELBSecurityGroupList (tt .args .securityGroupIDs , tt .args .annotations , tt . args . taggedLBSecurityGroups )
3176
3219
assert .Equal (t , tt .wantSecurityGroupIDs , tt .args .securityGroupIDs )
3177
3220
})
3178
3221
}
0 commit comments