@@ -11,10 +11,10 @@ import (
11
11
"github.com/Azure/skewer/testdata"
12
12
)
13
13
14
- func getSKUs (subscriptionID , region string ) (map [string ]testdata.SKUInfo , error ) {
14
+ func getSKUs (subscriptionID , region string ) (map [string ]testdata.SKUInfo , []testdata. SKU , error ) {
15
15
authorizer , err := auth .NewAuthorizerFromCLI ()
16
16
if err != nil {
17
- return nil , err
17
+ return nil , nil , err
18
18
}
19
19
20
20
// Create a new compute client
@@ -24,25 +24,27 @@ func getSKUs(subscriptionID, region string) (map[string]testdata.SKUInfo, error)
24
24
// List SKUs for the specified region
25
25
skuList , err := client .List (context .Background (), region , "" )
26
26
if err != nil {
27
- return nil , err
27
+ return nil , nil , err
28
28
}
29
29
30
- skus := map [string ]testdata.SKUInfo {}
30
+ skuInfoMap := map [string ]testdata.SKUInfo {}
31
+ skuSlice := []testdata.SKU {}
31
32
for _ , sku := range skuList .Values () {
32
33
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 })
34
36
skuInfo := testdata.SKUInfo {
35
37
Size : * sku .Size ,
36
38
}
37
- skus [* sku .Name ] = skuInfo
39
+ skuInfoMap [* sku .Name ] = skuInfo
38
40
}
39
41
}
40
42
}
41
43
42
- return skus , nil
44
+ return skuInfoMap , skuSlice , nil
43
45
}
44
46
45
- const templateCode = `package testdata
47
+ const vmSizeTestDataTemplate = `package testdata
46
48
47
49
type SKUInfo struct {
48
50
Size string
@@ -57,22 +59,60 @@ var SKUData = map[string]SKUInfo{
57
59
}
58
60
`
59
61
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 ))
62
84
if err != nil {
63
85
return err
64
86
}
65
87
defer file .Close ()
66
88
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 )
68
107
if err != nil {
69
108
return err
70
109
}
71
110
72
- err = tmpl .Execute (file , skus )
111
+ err = tmpl .Execute (file , skuSlice )
73
112
if err != nil {
74
113
return err
75
114
}
115
+ fmt .Printf ("Generated and saved %s successfully!\n " , vmSKUsGeneratedFilename )
76
116
77
117
return nil
78
118
}
@@ -87,17 +127,15 @@ func main() {
87
127
region = "eastus" // Default region if not provided in the environment variable
88
128
}
89
129
90
- skus , err := getSKUs (subscriptionID , region )
130
+ skuInfoMap , skuSlice , err := getSKUs (subscriptionID , region )
91
131
if err != nil {
92
132
fmt .Println ("Error fetching SKUs:" , err )
93
133
return
94
134
}
95
135
96
- err = generateAndSaveFile ( skus )
136
+ err = generateAndSaveFiles ( skuInfoMap , skuSlice )
97
137
if err != nil {
98
138
fmt .Println ("Error generating and saving file:" , err )
99
139
return
100
140
}
101
-
102
- fmt .Println ("Generated and saved skudata/skus_generated.go successfully!" )
103
141
}
0 commit comments