func()

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
}