in internal/deployers/eksapi/infra.go [428:452]
func (m *InfrastructureManager) getAZsWithCapacity(opts *deployerOptions) ([]string, error) {
var subnetAzs []string
capacityReservations, err := m.clients.EC2().DescribeCapacityReservations(context.TODO(), &ec2.DescribeCapacityReservationsInput{
Filters: []ec2types.Filter{
{
Name: aws.String("instance-type"),
Values: opts.InstanceTypes,
},
{
Name: aws.String("state"),
Values: []string{"active"},
},
},
})
if err != nil {
return nil, err
}
for _, cr := range capacityReservations.CapacityReservations {
if *cr.AvailableInstanceCount >= int32(opts.Nodes) {
subnetAzs = append(subnetAzs, *cr.AvailabilityZone)
break
}
}
return subnetAzs, nil
}