in custom-metrics-stackdriver-adapter/pkg/adapter/coreprovider/provider.go [191:230]
func (p *CoreProvider) getNodeMetrics(nodes ...string) ([]api.TimeInfo, []corev1.ResourceList, error) {
timeInfo := make([]api.TimeInfo, len(nodes))
coreMetrics := make([]corev1.ResourceList, len(nodes))
resourceNames := make([]string, len(nodes))
for i := range nodes {
resourceNames[i] = fmt.Sprintf("%q", nodes[i])
}
cpuMetrics, cpuTimeInfo, err := p.client.getNodeCPU(nodes)
if err != nil {
return nil, nil, err
}
ramMetrics, _, err := p.client.getNodeRAM(nodes)
if err != nil {
return nil, nil, err
}
for i, name := range nodes {
cpu, ok := cpuMetrics[name]
if !ok {
klog.V(4).Infof("Metric cpu not found for node '%s'", name)
continue
}
ram, ok := ramMetrics[name]
if !ok {
klog.V(4).Infof("Metric ram not found for node '%s'", name)
continue
}
coreMetrics[i] = corev1.ResourceList{
corev1.ResourceCPU: cpu,
corev1.ResourceMemory: ram,
}
timeInfo[i] = cpuTimeInfo[name]
if !ok {
return nil, nil, apierr.NewInternalError(fmt.Errorf("TimeInfo should be set for every node with metrics"))
}
}
return timeInfo, coreMetrics, nil
}