From e8c76f63654a4fe79caf8aa270cd9dd4f68081a2 Mon Sep 17 00:00:00 2001 From: r2k1 Date: Wed, 5 Feb 2025 11:24:11 +1300 Subject: [PATCH] add config generation hack --- pkg/agent/config_test.go | 95 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 pkg/agent/config_test.go diff --git a/pkg/agent/config_test.go b/pkg/agent/config_test.go new file mode 100644 index 00000000000..3ef24199d11 --- /dev/null +++ b/pkg/agent/config_test.go @@ -0,0 +1,95 @@ +package agent + +import ( + "encoding/json" + "testing" + + "github.com/Azure/agentbaker/pkg/agent/datamodel" + "github.com/stretchr/testify/require" +) + +func TestGenerateConfig(t *testing.T) { + type VersionSupport struct { + MinImageVersion string `json:"MinImageVersion"` + } + + type ConfigVersionSupport struct { + V1 VersionSupport `json:"v1"` + } + + type Distro struct { + Image datamodel.SigImageConfig `json:"Image"` + ConfigVersionSupport *ConfigVersionSupport `json:"ConfigVersionSupport,omitempty"` + } + type DistrosConfig struct { + Variables map[string]any `json:"Variables"` + Distros map[datamodel.Distro]Distro `json:"Distros"` + } + agentBaker, err := NewAgentBaker() + require.NoError(t, err) + galleries := map[string]datamodel.SIGGalleryConfig{ + "AKSUbuntu": { + GalleryName: "aksubuntu", + ResourceGroup: "resourcegroup", + }, + "AKSCBLMariner": { + GalleryName: "akscblmariner", + ResourceGroup: "resourcegroup", + }, + "AKSAzureLinux": { + GalleryName: "aksazurelinux", + ResourceGroup: "resourcegroup", + }, + "AKSWindows": { + GalleryName: "akswindows", + ResourceGroup: "resourcegroup", + }, + "AKSUbuntuEdgeZone": { + GalleryName: "AKSUbuntuEdgeZone", + ResourceGroup: "AKS-Ubuntu-EdgeZone", + }, + } + sigConfig := &datamodel.SIGConfig{ + TenantID: "sometenantid", + SubscriptionID: "somesubid", + Galleries: galleries, + } + config := &datamodel.NodeBootstrappingConfiguration{ + CloudSpecConfig: datamodel.AzurePublicCloudSpecForTest, + TenantID: "tenantID", + SubscriptionID: "subID", + ResourceGroupName: "resourceGroupName", + SIGConfig: *sigConfig, + } + configs, err := agentBaker.GetDistroSigImageConfig(config.SIGConfig, &datamodel.EnvironmentInfo{ + SubscriptionID: config.SubscriptionID, + TenantID: config.TenantID, + Region: "southcentralus", + }) + result := DistrosConfig{ + Variables: map[string]any{ + "LatestLinuxVersion": datamodel.LinuxSIGImageVersion, + }, + Distros: make(map[datamodel.Distro]Distro), + } + for k, v := range configs { + distro := Distro{ + Image: v, + } + if v.Version != datamodel.LinuxSIGImageVersion { + continue + } + if v.Version == datamodel.LinuxSIGImageVersion { + distro.ConfigVersionSupport = &ConfigVersionSupport{ + V1: VersionSupport{ + MinImageVersion: v.Version, + }, + } + } + result.Distros[k] = distro + } + + configsData, err := json.MarshalIndent(result, "", " ") + require.NoError(t, err) + t.Log(string(configsData)) +}