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
}