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