in pkg/registry/registry.go [174:199]
func (r *Registry) GetCustomMetricClient(info provider.CustomMetricInfo) (client.Interface, error) {
r.lock.RLock()
defer r.lock.RUnlock()
var metricClients *metricClients
var ok bool
if metricClients, ok = r.customMetrics[info]; !ok {
r.logger.V(1).Info("Custom metric is not served by any metric client", "metric_name", info.Metric)
return nil, &errors.StatusError{
ErrStatus: metav1.Status{
Status: metav1.StatusFailure,
Code: http.StatusNotFound,
Reason: metav1.StatusReasonNotFound,
Message: fmt.Sprintf("custom metric %s is not served by any metric client", info.Metric),
}}
}
metricClient, err := metricClients.getBestMetricClient()
if err != nil {
return nil, fmt.Errorf("no backend for custom metric: %v", info.Metric)
}
r.logger.V(1).Info(
"Custom metric found", "metric", info.String(),
"client_name", metricClient.GetConfiguration().Name,
"client_host", metricClient.GetConfiguration().ClientConfig.Host,
)
return metricClient, nil
}