func()

in pkg/client/custom_api/client.go [72:103]


func (mc *metricsClient) ListCustomMetricInfos() (map[provider.CustomMetricInfo]struct{}, error) {
	version, err := mc.customMetricsAvailableAPIsGetter.PreferredVersion()
	if err != nil {
		return nil, err
	}
	resources, err := mc.discoveryClient.ServerResourcesForGroupVersion(version.String())
	if err != nil {
		return nil, fmt.Errorf("failed to get resource for %s: %v", customMetricsAPI.SchemeGroupVersion, err)
	}
	metricInfos := make(map[provider.CustomMetricInfo]struct{})
	namer, err := config.NewNamer(mc.metricServerCfg.Rename)
	if err != nil {
		return nil, fmt.Errorf("%s: failed to create customMetricNamer: %v", mc.GetConfiguration().Name, err)
	}
	for _, r := range resources.APIResources {
		parts := strings.SplitN(r.Name, "/", 2)
		if len(parts) != 2 {
			mc.logger.Error(errors.New("provider returned a malformed metrics"), "Fail to list custom metrics", "provider_name", mc.metricServerCfg.Name, "metric_name", r.Name)
			continue
		}
		info := provider.CustomMetricInfo{
			GroupResource: schema.ParseGroupResource(parts[0]),
			Namespaced:    r.Namespaced,
			Metric:        namer.Register(parts[1]),
		}
		metricInfos[info] = struct{}{}
	}
	mc.rwLock.Lock()
	defer mc.rwLock.Unlock()
	mc.customMetricNamer = namer
	return metricInfos, nil
}