dell: strip MAC from model names; fix device-bound firmware in dell/inspur
- Dell NICView: strip " - XX:XX:XX:XX:XX:XX" suffix from ProductName (Dell TSR embeds MAC in this field for every NIC port) - Dell SoftwareIdentity: same strip applied to ElementName; store FQDD in FirmwareInfo.Description so exporter can filter device-bound entries - Exporter: add isDeviceBoundFirmwareFQDD() to filter firmware entries whose Description matches NIC./PSU./Disk./RAID.Backplane./GPU. FQDD prefixes (prevents device firmware from appearing in hardware.firmware) - Exporter: extend isDeviceBoundFirmwareName() to filter HGX GPU/NVSwitch firmware inventory IDs (_fw_gpu_, _fw_nvswitch_, _inforom_gpu_) - Inspur: remove HDD firmware from Hardware.Firmware — already present in Storage.Firmware, duplicating it violates ADL-016 - bible-local/06-parsers.md: document firmware and MAC stripping rules - bible-local/10-decisions.md: add ADL-016 (device-bound firmware) and ADL-017 (vendor-embedded MAC in model name fields) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -455,7 +455,7 @@ func convertFirmware(firmware []models.FirmwareInfo) []ReanimatorFirmware {
|
||||
|
||||
result := make([]ReanimatorFirmware, 0, len(firmware))
|
||||
for _, fw := range firmware {
|
||||
if isDeviceBoundFirmwareName(fw.DeviceName) {
|
||||
if isDeviceBoundFirmwareName(fw.DeviceName) || isDeviceBoundFirmwareFQDD(fw.Description) {
|
||||
continue
|
||||
}
|
||||
result = append(result, ReanimatorFirmware{
|
||||
@@ -690,13 +690,34 @@ func isDeviceBoundFirmwareName(name string) bool {
|
||||
strings.HasPrefix(n, "hdd ") ||
|
||||
strings.HasPrefix(n, "ssd ") ||
|
||||
strings.HasPrefix(n, "nvme ") ||
|
||||
strings.HasPrefix(n, "psu") {
|
||||
strings.HasPrefix(n, "psu") ||
|
||||
// HGX baseboard firmware inventory IDs for device-bound components
|
||||
strings.Contains(n, "_fw_gpu_") ||
|
||||
strings.Contains(n, "_fw_nvswitch_") ||
|
||||
strings.Contains(n, "_inforom_gpu_") {
|
||||
return true
|
||||
}
|
||||
|
||||
return cpuMicrocodeFirmwareRegex.MatchString(strings.TrimSpace(name))
|
||||
}
|
||||
|
||||
// isDeviceBoundFirmwareFQDD returns true if the description looks like a device-bound FQDD
|
||||
// (e.g. NIC.Integrated.1-1-1, PSU.Slot.1, Disk.Bay.0:..., RAID.Backplane.Firmware.0).
|
||||
// These firmware entries are already embedded in the device itself and must not appear
|
||||
// in hardware.firmware.
|
||||
func isDeviceBoundFirmwareFQDD(desc string) bool {
|
||||
d := strings.ToLower(strings.TrimSpace(desc))
|
||||
if d == "" {
|
||||
return false
|
||||
}
|
||||
for _, prefix := range []string{"nic.", "psu.", "disk.", "raid.backplane.", "gpu."} {
|
||||
if strings.HasPrefix(d, prefix) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// convertCPUs converts CPU information to Reanimator format
|
||||
func convertCPUs(cpus []models.CPU, collectedAt string) []ReanimatorCPU {
|
||||
if len(cpus) == 0 {
|
||||
|
||||
Reference in New Issue
Block a user