in pkg/nitro_enclaves_cpu_plugin/device_plugin.go [54:90]
func determineAdvisableCPUs(data string) (int, error) {
// Handle empty/unknown case
content := strings.TrimSpace(data)
if content == "" {
return 0, nil
}
total := 0
ranges := strings.Split(content, ",")
for _, r := range ranges {
parts := strings.Split(r, "-")
switch len(parts) {
case 1:
// Single CPU
// Ensure that parts is a valid number
_, err := strconv.Atoi(parts[0])
if err != nil {
return 0, fmt.Errorf("invalid CPU number: %s, parsing caused error: %w", r, err)
}
total++
case 2:
// CPU range
start, err1 := strconv.Atoi(parts[0])
end, err2 := strconv.Atoi(parts[1])
if err1 != nil || err2 != nil {
return 0, fmt.Errorf("invalid CPU range: %s", r)
}
total += end - start + 1
default:
return 0, fmt.Errorf("malformed CPU range: %s", r)
}
}
return total, nil
}