@@ -11,10 +11,10 @@ import (
1111 "github.com/Azure/skewer/testdata"
1212)
1313
14- func getSKUs (subscriptionID , region string ) (map [string ]testdata.SKUInfo , error ) {
14+ func getSKUs (subscriptionID , region string ) (map [string ]testdata.SKUInfo , []testdata. SKU , error ) {
1515 authorizer , err := auth .NewAuthorizerFromCLI ()
1616 if err != nil {
17- return nil , err
17+ return nil , nil , err
1818 }
1919
2020 // Create a new compute client
@@ -24,25 +24,27 @@ func getSKUs(subscriptionID, region string) (map[string]testdata.SKUInfo, error)
2424 // List SKUs for the specified region
2525 skuList , err := client .List (context .Background (), region , "" )
2626 if err != nil {
27- return nil , err
27+ return nil , nil , err
2828 }
2929
30- skus := map [string ]testdata.SKUInfo {}
30+ skuInfoMap := map [string ]testdata.SKUInfo {}
31+ skuSlice := []testdata.SKU {}
3132 for _ , sku := range skuList .Values () {
3233 if * sku .ResourceType == "virtualMachines" {
33- if _ , ok := skus [* sku .Name ]; ! ok {
34+ if _ , ok := skuInfoMap [* sku .Name ]; ! ok {
35+ skuSlice = append (skuSlice , testdata.SKU {Name : sku .Name })
3436 skuInfo := testdata.SKUInfo {
3537 Size : * sku .Size ,
3638 }
37- skus [* sku .Name ] = skuInfo
39+ skuInfoMap [* sku .Name ] = skuInfo
3840 }
3941 }
4042 }
4143
42- return skus , nil
44+ return skuInfoMap , skuSlice , nil
4345}
4446
45- const templateCode = `package testdata
47+ const vmSizeTestDataTemplate = `package testdata
4648
4749type SKUInfo struct {
4850 Size string
@@ -57,22 +59,60 @@ var SKUData = map[string]SKUInfo{
5759}
5860`
5961
60- func generateAndSaveFile (skus map [string ]testdata.SKUInfo ) error {
61- file , err := os .Create ("../testdata/generated_vmsize_testdata.go" )
62+ const vmSKUsTestDataTemplate = `package testdata
63+
64+ import (
65+ "k8s.io/utils/ptr"
66+ )
67+
68+ type SKU struct {
69+ Name *string
70+ }
71+
72+ var SKUs = []SKU{
73+ {{- range $i, $data := .}}
74+ {
75+ Name: ptr.To("{{ $data.Name }}"),
76+ },
77+ {{- end }}
78+ }
79+ `
80+
81+ func generateAndSaveFiles (skuInfoMap map [string ]testdata.SKUInfo , skuSlice []testdata.SKU ) error {
82+ vmSizeGeneratedFilename := "testdata/generated_vmsize_testdata.go"
83+ file , err := os .Create (fmt .Sprintf ("../%s" , vmSizeGeneratedFilename ))
6284 if err != nil {
6385 return err
6486 }
6587 defer file .Close ()
6688
67- tmpl , err := template .New ("skus_template" ).Parse (templateCode )
89+ tmpl , err := template .New ("vmSize_test_data_template" ).Parse (vmSizeTestDataTemplate )
90+ if err != nil {
91+ return err
92+ }
93+
94+ err = tmpl .Execute (file , skuInfoMap )
95+ if err != nil {
96+ return err
97+ }
98+ fmt .Printf ("Generated and saved %s successfully!\n " , vmSizeGeneratedFilename )
99+
100+ vmSKUsGeneratedFilename := "testdata/generated_vmskus_testdata.go"
101+ file , err = os .Create (fmt .Sprintf ("../%s" , vmSKUsGeneratedFilename ))
102+ if err != nil {
103+ return err
104+ }
105+ defer file .Close ()
106+ tmpl , err = template .New ("vmSKUs_test_data_template" ).Parse (vmSKUsTestDataTemplate )
68107 if err != nil {
69108 return err
70109 }
71110
72- err = tmpl .Execute (file , skus )
111+ err = tmpl .Execute (file , skuSlice )
73112 if err != nil {
74113 return err
75114 }
115+ fmt .Printf ("Generated and saved %s successfully!\n " , vmSKUsGeneratedFilename )
76116
77117 return nil
78118}
@@ -87,17 +127,15 @@ func main() {
87127 region = "eastus" // Default region if not provided in the environment variable
88128 }
89129
90- skus , err := getSKUs (subscriptionID , region )
130+ skuInfoMap , skuSlice , err := getSKUs (subscriptionID , region )
91131 if err != nil {
92132 fmt .Println ("Error fetching SKUs:" , err )
93133 return
94134 }
95135
96- err = generateAndSaveFile ( skus )
136+ err = generateAndSaveFiles ( skuInfoMap , skuSlice )
97137 if err != nil {
98138 fmt .Println ("Error generating and saving file:" , err )
99139 return
100140 }
101-
102- fmt .Println ("Generated and saved skudata/skus_generated.go successfully!" )
103141}
0 commit comments