in pkg/client/elasticsearch/client.go [297:332]
func (mc *MetricsClient) metricsFor(
ctx *context.Context,
namespace string,
selector labels.Selector,
info provider.CustomMetricInfo,
metricSelector labels.Selector,
) (*custom_metrics.MetricValueList, error) {
defer tracing.Span(ctx)()
mc.logger.V(1).Info("metricsFor", "selector", selector, "metric", info.String())
names, err := helpers.ListObjectNames(mc.mapper, mc.client, namespace, selector, info)
if err != nil {
return nil, err
}
res := make([]custom_metrics.MetricValue, 0, len(names))
for _, name := range names {
namespacedName := types.NamespacedName{Name: name, Namespace: namespace}
value, err := mc.valueFor(ctx, info, namespacedName, selector, names, metricSelector)
if err != nil {
if apierr.IsNotFound(err) {
continue
}
return nil, err
}
metric, err := mc.metricFor(ctx, value, namespacedName, selector, info, metricSelector)
if err != nil {
return nil, err
}
res = append(res, *metric)
}
return &custom_metrics.MetricValueList{
Items: res,
}, nil
}