in pkg/metrics/collector/kernel_metrics.go [91:115]
func parseKeyValueLines(output, label string) (map[string]uint64, error) {
stats := make(map[string]uint64)
splitFile := strings.Split(output, "\n")
for i, stat := range splitFile {
if !strings.Contains(stat, label) {
continue
}
keyList := strings.Fields(stat)
// TODO(#112): Look for next instance of label rather than assuming its the next
valList := strings.Fields(splitFile[i+1])
if len(valList) != len(keyList) {
// Return nothing if malformed.
return nil, fmt.Errorf("malformed key value pair while parsing %q", label)
}
for i, key := range keyList[1:] {
val, err := strconv.Atoi(valList[i+1])
if err != nil {
return nil, fmt.Errorf("could not cast value to uint64, got %q", err)
}
stats[key] = uint64(val)
}
return stats, nil
}
return stats, nil
}