func()

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
}