in scripts/gen_vpc_ip_limits.go [48:112]
func main() {
ctx := context.Background()
cfg, err := config.LoadDefaultConfig(ctx)
if err != nil {
log.Fatalf("Failed to load configuration: %v", err)
}
// Get instance types limits across all regions
regions := describeRegions(ctx, cfg)
eniLimitMap := make(map[string]vpc.InstanceTypeLimits)
for _, region := range regions {
describeInstanceTypes(ctx, cfg, region, eniLimitMap)
}
// Override faulty values and add missing instance types
eniLimitMap = addManualLimits(eniLimitMap)
// Sort the keys
instanceTypes := make([]string, 0)
for k := range eniLimitMap {
instanceTypes = append(instanceTypes, k)
}
sort.Strings(instanceTypes)
// Generate instance ENI limits
f, err := os.Create(ipLimitFileName)
if err != nil {
log.Fatalf("Failed to create file: %v\n", err)
}
err = limitsTemplate.Execute(f, struct {
ENILimits map[string]vpc.InstanceTypeLimits
Regions []string
}{
ENILimits: eniLimitMap,
Regions: regions,
})
if err != nil {
log.Fatalf("Failed to generate template: %v\n", err)
}
log.Infof("Generated %s", ipLimitFileName)
// Generate --max-pods file for awslabs/amazon-eks-ami
eniPods := make([]string, 0)
for _, it := range instanceTypes {
eniPods = append(eniPods, printPodLimit(it, eniLimitMap[it]))
}
f, err = os.Create(eniMaxPodsFileName)
if err != nil {
log.Fatalf("Failed to create file: %s\n", err)
}
err = eksMaxPodsTemplate.Execute(f, struct {
ENIPods []string
Regions []string
}{
ENIPods: eniPods,
Regions: regions,
})
if err != nil {
log.Fatalf("Failed to generate template: %v\n", err)
}
log.Infof("Generated %s", eniMaxPodsFileName)
}