Centralize CPU identity in models.ResolveCPUSerialNumber: an explicit source serial wins, otherwise a valid source PPIN is used, placeholders rejected. Dell, H3C and Redfish apply it while parsing; canonical-device and Reanimator conversion apply it again at the output boundary. No identity is synthesized from socket/model/board serial. See ADL-058. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
697 B
Go
24 lines
697 B
Go
package models
|
|
|
|
import "strings"
|
|
|
|
// ResolveCPUSerialNumber returns a source-backed processor inventory identity.
|
|
// A vendor-provided serial number has priority; PPIN is the documented CPU
|
|
// serial identity and is used when a separate serial number is unavailable.
|
|
func ResolveCPUSerialNumber(serialNumber, ppin string) string {
|
|
if serial := validCPUIdentity(serialNumber); serial != "" {
|
|
return serial
|
|
}
|
|
return validCPUIdentity(ppin)
|
|
}
|
|
|
|
func validCPUIdentity(value string) string {
|
|
value = strings.TrimSpace(value)
|
|
switch strings.ToLower(value) {
|
|
case "", "-", "n/a", "na", "none", "null", "unknown", "not available", "to be filled by o.e.m.":
|
|
return ""
|
|
default:
|
|
return value
|
|
}
|
|
}
|