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
}