func()

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
}