func()

in pkg/providers/imagefamily/nodeimage.go [40:77]


func (p *Provider) List(ctx context.Context, nodeClass *v1alpha2.AKSNodeClass) ([]NodeImage, error) {
	kubernetesVersion, err := nodeClass.GetKubernetesVersion()
	if err != nil {
		return []NodeImage{}, err
	}

	supportedImages := getSupportedImages(nodeClass.Spec.ImageFamily)
	// TODO: refactor to be part of construction, since this is a karpenter setting and won't change across the process.
	useSIG := options.FromContext(ctx).UseSIG

	key, err := p.cacheKey(
		supportedImages,
		kubernetesVersion,
	)
	if err != nil {
		return []NodeImage{}, err
	}

	if nodeImages, ok := p.nodeImagesCache.Get(key); ok {
		return nodeImages.([]NodeImage), nil
	}

	var nodeImages []NodeImage
	if useSIG {
		nodeImages, err = p.listSIG(ctx, supportedImages)
		if err != nil {
			return []NodeImage{}, err
		}
	} else {
		nodeImages, err = p.listCIG(ctx, supportedImages)
		if err != nil {
			return []NodeImage{}, err
		}
	}
	p.nodeImagesCache.Set(key, nodeImages, cache.DefaultExpiration)

	return nodeImages, nil
}