func()

in pkg/client/elasticsearch/client.go [223:259]


func (mc *MetricsClient) valueFor(
	ctx *context.Context,
	info provider.CustomMetricInfo,
	name types.NamespacedName,
	originalSelector labels.Selector,
	objects []string,
	metricSelector labels.Selector,
) (timestampedMetric, error) {
	defer tracing.Span(ctx)()
	info, _, err := info.Normalized(mc.mapper)
	if err != nil {
		return timestampedMetric{}, err
	}
	mc.lock.RLock()
	defer mc.lock.RUnlock()
	metricName, ok := mc.namer.Get(info.Metric)
	if !ok {
		return timestampedMetric{}, fmt.Errorf("metric name alias for custom metric %s not found", info.Metric)
	}
	info.Metric = metricName
	metadata, ok := mc.indexedMetrics[info.Metric]
	if !ok {
		return timestampedMetric{}, fmt.Errorf("no metadata for metric %s", info.Metric)
	}
	value, err := getMetricForPod(ctx, mc.Client, metadata, name, info, metricSelector, originalSelector, objects)
	if err != nil {
		return timestampedMetric{}, err
	}

	// TODO: handle metricSelector
	/*if !metricSelector.Matches(value.labels) {
		return resource.Quantity{}, provider.NewMetricNotFoundForSelectorError(info.GroupResource, info.Metric, name.Name, metricSelector)
	}*/

	return value, nil

}