@@ -1024,6 +1024,146 @@ func Test_defaultSubnetsResolver_ResolveViaDiscovery(t *testing.T) {
1024
1024
},
1025
1025
wantErr : errors .New ("unable to resolve at least one subnet. Evaluated 2 subnets: 1 are tagged for other clusters, and 1 have insufficient available IP addresses" ),
1026
1026
},
1027
+ {
1028
+ name : "multiple subnets found per AZ, pick one per az" ,
1029
+ fields : fields {
1030
+ clusterTagCheckEnabled : true ,
1031
+ albSingleSubnetEnabled : false ,
1032
+ discoveryByReachabilityEnabled : true ,
1033
+ describeSubnetsAsListCalls : []describeSubnetsAsListCall {
1034
+ {
1035
+ input : & ec2sdk.DescribeSubnetsInput {
1036
+ Filters : []ec2types.Filter {
1037
+ {
1038
+ Name : awssdk .String ("vpc-id" ),
1039
+ Values : []string {"vpc-dummy" },
1040
+ },
1041
+ {
1042
+ Name : awssdk .String ("tag:kubernetes.io/role/elb" ),
1043
+ Values : []string {"" , "1" },
1044
+ },
1045
+ },
1046
+ },
1047
+ output : []ec2types.Subnet {
1048
+ {
1049
+ SubnetId : awssdk .String ("subnet-1" ),
1050
+ AvailabilityZone : awssdk .String ("us-west-2a" ),
1051
+ AvailabilityZoneId : awssdk .String ("usw2-az1" ),
1052
+ AvailableIpAddressCount : awssdk .Int32 (8 ),
1053
+ VpcId : awssdk .String ("vpc-dummy" ),
1054
+ Tags : []ec2types.Tag {
1055
+ {
1056
+ Key : awssdk .String ("kubernetes.io/role/elb" ),
1057
+ Value : awssdk .String ("1" ),
1058
+ },
1059
+ },
1060
+ },
1061
+ {
1062
+ SubnetId : awssdk .String ("subnet-2" ),
1063
+ AvailabilityZone : awssdk .String ("us-west-2a" ),
1064
+ AvailabilityZoneId : awssdk .String ("usw2-az1" ),
1065
+ AvailableIpAddressCount : awssdk .Int32 (8 ),
1066
+ VpcId : awssdk .String ("vpc-dummy" ),
1067
+ Tags : []ec2types.Tag {
1068
+ {
1069
+ Key : awssdk .String ("kubernetes.io/role/elb" ),
1070
+ Value : awssdk .String ("1" ),
1071
+ },
1072
+ {
1073
+ Key : awssdk .String ("kubernetes.io/cluster/cluster-dummy" ),
1074
+ Value : awssdk .String ("owned" ),
1075
+ },
1076
+ },
1077
+ },
1078
+ {
1079
+ SubnetId : awssdk .String ("subnet-3" ),
1080
+ AvailabilityZone : awssdk .String ("us-west-2b" ),
1081
+ AvailabilityZoneId : awssdk .String ("usw2-az2" ),
1082
+ AvailableIpAddressCount : awssdk .Int32 (8 ),
1083
+ VpcId : awssdk .String ("vpc-dummy" ),
1084
+ Tags : []ec2types.Tag {
1085
+ {
1086
+ Key : awssdk .String ("kubernetes.io/role/elb" ),
1087
+ Value : awssdk .String ("1" ),
1088
+ },
1089
+ },
1090
+ },
1091
+ {
1092
+ SubnetId : awssdk .String ("subnet-4" ),
1093
+ AvailabilityZone : awssdk .String ("us-west-2b" ),
1094
+ AvailabilityZoneId : awssdk .String ("usw2-az2" ),
1095
+ AvailableIpAddressCount : awssdk .Int32 (8 ),
1096
+ VpcId : awssdk .String ("vpc-dummy" ),
1097
+ Tags : []ec2types.Tag {
1098
+ {
1099
+ Key : awssdk .String ("kubernetes.io/role/elb" ),
1100
+ Value : awssdk .String ("1" ),
1101
+ },
1102
+ },
1103
+ },
1104
+ },
1105
+ },
1106
+ },
1107
+ fetchAZInfosCalls : []fetchAZInfosCall {
1108
+ {
1109
+ availabilityZoneIDs : []string {"usw2-az1" },
1110
+ azInfoByAZID : map [string ]ec2types.AvailabilityZone {
1111
+ "usw2-az1" : {
1112
+ ZoneId : awssdk .String ("usw2-az1" ),
1113
+ ZoneType : awssdk .String ("availability-zone" ),
1114
+ },
1115
+ },
1116
+ },
1117
+ {
1118
+ availabilityZoneIDs : []string {"usw2-az2" },
1119
+ azInfoByAZID : map [string ]ec2types.AvailabilityZone {
1120
+ "usw2-az2" : {
1121
+ ZoneId : awssdk .String ("usw2-az2" ),
1122
+ ZoneType : awssdk .String ("availability-zone" ),
1123
+ },
1124
+ },
1125
+ },
1126
+ },
1127
+ },
1128
+ args : args {
1129
+ opts : []SubnetsResolveOption {
1130
+ WithSubnetsResolveLBType (elbv2model .LoadBalancerTypeApplication ),
1131
+ WithSubnetsResolveLBScheme (elbv2model .LoadBalancerSchemeInternetFacing ),
1132
+ },
1133
+ },
1134
+ want : []ec2types.Subnet {
1135
+ {
1136
+ SubnetId : awssdk .String ("subnet-2" ),
1137
+ AvailabilityZone : awssdk .String ("us-west-2a" ),
1138
+ AvailabilityZoneId : awssdk .String ("usw2-az1" ),
1139
+ AvailableIpAddressCount : awssdk .Int32 (8 ),
1140
+ VpcId : awssdk .String ("vpc-dummy" ),
1141
+ Tags : []ec2types.Tag {
1142
+ {
1143
+ Key : awssdk .String ("kubernetes.io/role/elb" ),
1144
+ Value : awssdk .String ("1" ),
1145
+ },
1146
+ {
1147
+ Key : awssdk .String ("kubernetes.io/cluster/cluster-dummy" ),
1148
+ Value : awssdk .String ("owned" ),
1149
+ },
1150
+ },
1151
+ },
1152
+ {
1153
+ SubnetId : awssdk .String ("subnet-3" ),
1154
+ AvailabilityZone : awssdk .String ("us-west-2b" ),
1155
+ AvailabilityZoneId : awssdk .String ("usw2-az2" ),
1156
+ AvailableIpAddressCount : awssdk .Int32 (8 ),
1157
+ VpcId : awssdk .String ("vpc-dummy" ),
1158
+ Tags : []ec2types.Tag {
1159
+ {
1160
+ Key : awssdk .String ("kubernetes.io/role/elb" ),
1161
+ Value : awssdk .String ("1" ),
1162
+ },
1163
+ },
1164
+ },
1165
+ },
1166
+ },
1027
1167
{
1028
1168
name : "fallback to reachability were disabled" ,
1029
1169
fields : fields {
@@ -2353,6 +2493,13 @@ func Test_defaultSubnetsResolver_chooseSubnetsPerAZ(t *testing.T) {
2353
2493
AvailableIpAddressCount : awssdk .Int32 (8 ),
2354
2494
VpcId : awssdk .String ("vpc-dummy" ),
2355
2495
},
2496
+ {
2497
+ SubnetId : awssdk .String ("subnet-4" ),
2498
+ AvailabilityZone : awssdk .String ("us-west-2b" ),
2499
+ AvailabilityZoneId : awssdk .String ("usw2-az2" ),
2500
+ AvailableIpAddressCount : awssdk .Int32 (8 ),
2501
+ VpcId : awssdk .String ("vpc-dummy" ),
2502
+ },
2356
2503
},
2357
2504
want : []ec2types.Subnet {
2358
2505
{
@@ -2401,6 +2548,13 @@ func Test_defaultSubnetsResolver_chooseSubnetsPerAZ(t *testing.T) {
2401
2548
AvailableIpAddressCount : awssdk .Int32 (8 ),
2402
2549
VpcId : awssdk .String ("vpc-dummy" ),
2403
2550
},
2551
+ {
2552
+ SubnetId : awssdk .String ("subnet-4" ),
2553
+ AvailabilityZone : awssdk .String ("us-west-2b" ),
2554
+ AvailabilityZoneId : awssdk .String ("usw2-az2" ),
2555
+ AvailableIpAddressCount : awssdk .Int32 (8 ),
2556
+ VpcId : awssdk .String ("vpc-dummy" ),
2557
+ },
2404
2558
},
2405
2559
want : []ec2types.Subnet {
2406
2560
{
0 commit comments