in hack/code/instancetype_testdata_gen/main.go [34:82]
func main() {
fmt.Println("starting generation of sku data...")
sub := os.Getenv("SUBSCRIPTION_ID")
path, region, selectedSkus := os.Args[2], os.Args[3], os.Args[4]
skus := strings.Split(selectedSkus, ",")
targetSkus := map[string]struct{}{}
for _, sku := range skus {
targetSkus[sku] = struct{}{}
}
if sub == "" {
fmt.Println("SUBSCRIPTION_ID env var is required")
os.Exit(1)
}
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
fmt.Printf("failed to create credential: %v", err)
os.Exit(1)
}
ctx := context.Background()
if err != nil {
fmt.Printf("failed to create client factory: %v", err)
}
client, err := armcompute.NewResourceSKUsClient(sub, cred, nil)
if err != nil {
panic(err)
}
pager := client.NewListPager(&armcompute.ResourceSKUsClientListOptions{
// filter by location
Filter: lo.ToPtr(fmt.Sprintf("location eq '%s'", region)),
})
skuData := []*armcompute.ResourceSKU{}
for pager.More() {
page, err := pager.NextPage(ctx)
if err != nil {
fmt.Printf("failed to get next page: %v", err)
}
for _, sku := range page.Value {
if _, ok := targetSkus[*sku.Name]; !ok {
continue
}
skuData = append(skuData, sku)
}
}
fmt.Println("Successfully Fetched all the SKUs", len(skuData))
writeSkuData(skuData, region, path)
fmt.Println("Successfully Generated all the SKUs")
}