func determineAdvisableCPUs()

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
}