func()

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
}