in internal/deployers/eksapi/node.go [657:689]
func (m *nodeManager) getValidSubnets(opts *deployerOptions, infra *Infrastructure, availabilityZoneFilter []string) ([]string, error) {
var describeFilters []ec2types.Filter
var targetSubnets []string
if opts.EFA {
// EFA requires private subnets
targetSubnets = infra.subnetsPrivate
} else {
targetSubnets = infra.subnets()
}
if len(availabilityZoneFilter) > 0 {
describeFilters = append(describeFilters, ec2types.Filter{
Name: aws.String("availability-zone"),
Values: availabilityZoneFilter,
},
)
}
describeResponse, err := m.clients.EC2().DescribeSubnets(context.TODO(), &ec2.DescribeSubnetsInput{
Filters: describeFilters,
SubnetIds: targetSubnets,
})
if err != nil {
return nil, fmt.Errorf("failed to describe subnets %v: %v", targetSubnets, err)
}
if describeResponse == nil || len(describeResponse.Subnets) == 0 {
return nil, fmt.Errorf("no subnet in %v satisfied filters: %+v", targetSubnets, describeFilters)
}
var subnetIds []string
for _, subnet := range describeResponse.Subnets {
subnetIds = append(subnetIds, *subnet.SubnetId)
}
klog.Infof("Using subnets: %v", subnetIds)
return subnetIds, nil
}