diff --git a/apiserver/getcachedvhdimages.go b/apiserver/getcachedvhdimages.go index 20f2b0c28e1..d16c6ae6d89 100644 --- a/apiserver/getcachedvhdimages.go +++ b/apiserver/getcachedvhdimages.go @@ -16,8 +16,8 @@ const ( ) type CachedOnVHD struct { - CachedFromManifest map[string]datamodel.ProcessedManifest `json:"cached_from_manifest"` - CachedFromComponents map[string]datamodel.ProcessedComponents `json:"cached_from_components"` + CachedFromManifest map[string]datamodel.ProcessedManifest `json:"cached_from_manifest"` + CachedFromComponents map[string]datamodel.ContainerImage `json:"cached_from_components"` } // GetCachedVersionsOnVHD endpoint for getting the current versions of components cached on the vhd. diff --git a/pkg/agent/bakerapi.go b/pkg/agent/bakerapi.go index fc8f63a93e7..b1f32f14bd5 100644 --- a/pkg/agent/bakerapi.go +++ b/pkg/agent/bakerapi.go @@ -16,7 +16,7 @@ type AgentBaker interface { GetNodeBootstrapping(ctx context.Context, config *datamodel.NodeBootstrappingConfiguration) (*datamodel.NodeBootstrapping, error) GetLatestSigImageConfig(sigConfig datamodel.SIGConfig, distro datamodel.Distro, envInfo *datamodel.EnvironmentInfo) (*datamodel.SigImageConfig, error) GetDistroSigImageConfig(sigConfig datamodel.SIGConfig, envInfo *datamodel.EnvironmentInfo) (map[datamodel.Distro]datamodel.SigImageConfig, error) - GetCachedVersionsOnVHD() (map[string]datamodel.ProcessedManifest, map[string]datamodel.ProcessedComponents, error) + GetCachedVersionsOnVHD() (map[string]datamodel.ProcessedManifest, map[string]datamodel.ContainerImage, error) } type agentBakerImpl struct { @@ -176,6 +176,6 @@ func findSIGImageConfig(sigConfig datamodel.SIGAzureEnvironmentSpecConfig, distr return nil } -func (agentBaker *agentBakerImpl) GetCachedVersionsOnVHD() (map[string]datamodel.ProcessedManifest, map[string]datamodel.ProcessedComponents, error) { +func (agentBaker *agentBakerImpl) GetCachedVersionsOnVHD() (map[string]datamodel.ProcessedManifest, map[string]datamodel.ContainerImage, error) { return datamodel.CachedFromManifest, datamodel.CachedFromComponents, nil } diff --git a/pkg/agent/datamodel/helper.go b/pkg/agent/datamodel/helper.go index 818c73eedfb..d048afa78f9 100644 --- a/pkg/agent/datamodel/helper.go +++ b/pkg/agent/datamodel/helper.go @@ -105,12 +105,18 @@ func trimEOF(data []byte) []byte { return data } -func processDownloadURL(downloadURL string) string { +func processDownloadURL(downloadURL string) (string, error) { // example URL "downloadURL": "mcr.microsoft.com/oss/kubernetes/autoscaler/addon-resizer:*", // getting the data between the last / and the last : parts := strings.Split(downloadURL, "/") + if len(parts) == 0 || len(parts[len(parts)-1]) == 0 { + return "", errors.New("downloadURL is not in the expected format") + } lastPart := parts[len(parts)-1] + component := strings.Split(lastPart, ":") - componentName := component[0] - return componentName + if len(component) == 0 || len(component[0]) == 0 { + return "", errors.New("downloadURL is not in the expected format") + } + return component[0], nil } diff --git a/pkg/agent/datamodel/sig_config.go b/pkg/agent/datamodel/sig_config.go index f7b6f48e342..d85ba0e9e86 100644 --- a/pkg/agent/datamodel/sig_config.go +++ b/pkg/agent/datamodel/sig_config.go @@ -17,7 +17,7 @@ const ( //nolint:gochecknoglobals var ( - CachedFromComponents = make(map[string]ProcessedComponents) + CachedFromComponents = make(map[string]ContainerImage) CachedFromManifest = make(map[string]ProcessedManifest) ) @@ -317,7 +317,7 @@ type SigImageConfig struct { SigImageConfigTemplate SubscriptionID string CachedFromManifest map[string]ProcessedManifest - CachedFromComponents map[string]ProcessedComponents + CachedFromComponents map[string]ContainerImage } // WithOptions converts a SigImageConfigTemplate to SigImageConfig instance via function opts. @@ -1001,7 +1001,7 @@ type PrefetchOptimizations struct { Binaries []string } -type ProcessedComponents struct { +type ContainerImage struct { MultiArchVersions []string Amd64OnlyVersions []string PrefetchOptimizations PrefetchOptimizations @@ -1018,8 +1018,11 @@ func getCachedVersionsFromComponentsJSON(componentsFilePath string) { } for _, image := range components.ContainerImages { - componentName := processDownloadURL(image.DownloadURL) - processed := ProcessedComponents{ + componentName, err := processDownloadURL(image.DownloadURL) + if err != nil { + panic(err) + } + processed := ContainerImage{ MultiArchVersions: image.MultiArchVersions, Amd64OnlyVersions: image.Amd64OnlyVersions, }