Skip to content

Commit 35b318d

Browse files
committed
Add generated new SKU type data
Signed-off-by: Jack Francis <[email protected]>
1 parent 6f2365e commit 35b318d

File tree

5 files changed

+4916
-891
lines changed

5 files changed

+4916
-891
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ require (
88
github.com/Azure/go-autorest/autorest/to v0.4.0
99
github.com/google/go-cmp v0.5.9
1010
github.com/pkg/errors v0.9.1
11+
k8s.io/utils v0.0.0-20240821151609-f90d01438635
1112
)
1213

1314
require (

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
9595
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
9696
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
9797
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
98+
k8s.io/utils v0.0.0-20240821151609-f90d01438635 h1:2wThSvJoW/Ncn9TmQEYXRnevZXi2duqHWf5OX9S3zjI=
99+
k8s.io/utils v0.0.0-20240821151609-f90d01438635/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=

hack/generate_vmsize_testdata.go

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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
4749
type 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

Comments
 (0)