in pkg/client/custom_api/client.go [219:244]
func (mc *metricsClient) GetExternalMetric(name, namespace string, selector labels.Selector) (*external_metrics.ExternalMetricValueList, error) {
mc.rwLock.Lock()
defer mc.rwLock.Unlock()
metricName, ok := mc.externalMetricNamer.Get(name)
if !ok {
return nil, fmt.Errorf("metric name alias for external metric %s/%s not found", namespace, name)
}
result, err := mc.externalMetricsClient.NamespacedMetrics(namespace).List(metricName, selector)
if err != nil {
return nil, fmt.Errorf("failed to get metrics for external metric %s/%s: %v", namespace, metricName, err)
}
valueList := &external_metrics.ExternalMetricValueList{
Items: make([]external_metrics.ExternalMetricValue, len(result.Items)),
}
for i, m := range result.Items {
valueList.Items[i] = external_metrics.ExternalMetricValue{
TypeMeta: metav1.TypeMeta{Kind: m.Kind, APIVersion: m.APIVersion},
MetricName: m.MetricName,
MetricLabels: m.MetricLabels,
Timestamp: m.Timestamp,
WindowSeconds: m.WindowSeconds,
Value: m.Value,
}
}
return valueList, nil
}