export: align reanimator contract v2.7
This commit is contained in:
2
internal/parser/vendors/h3c/parser.go
vendored
2
internal/parser/vendors/h3c/parser.go
vendored
@@ -216,6 +216,7 @@ func parseH3CG5(files []parser.ExtractedFile) *models.AnalysisResult {
|
||||
}
|
||||
result.Hardware.Storage = dedupeStorage(result.Hardware.Storage)
|
||||
result.Hardware.Volumes = dedupeVolumes(result.Hardware.Volumes)
|
||||
parser.ApplyManufacturedYearWeekFromFRU(result.FRU, result.Hardware)
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -286,6 +287,7 @@ func parseH3CG6(files []parser.ExtractedFile) *models.AnalysisResult {
|
||||
}
|
||||
result.Hardware.Storage = dedupeStorage(result.Hardware.Storage)
|
||||
result.Hardware.Volumes = dedupeVolumes(result.Hardware.Volumes)
|
||||
parser.ApplyManufacturedYearWeekFromFRU(result.FRU, result.Hardware)
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
33
internal/parser/vendors/inspur/event_logs_test.go
vendored
Normal file
33
internal/parser/vendors/inspur/event_logs_test.go
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
package inspur
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestParseIDLLog_UsesBMCSourceForEventLogs(t *testing.T) {
|
||||
content := []byte(`|2025-12-02T17:54:27+08:00|MEMORY|Assert|Warning|0C180401|CPU1_C4D0 Memory Device Disabled - Assert|`)
|
||||
|
||||
events := ParseIDLLog(content)
|
||||
if len(events) != 1 {
|
||||
t.Fatalf("expected 1 event, got %d", len(events))
|
||||
}
|
||||
if events[0].Source != "BMC" {
|
||||
t.Fatalf("expected IDL events to use BMC source, got %#v", events[0])
|
||||
}
|
||||
if events[0].SensorName != "CPU1_C4D0" {
|
||||
t.Fatalf("expected extracted DIMM component ref, got %#v", events[0])
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseSyslog_UsesHostSourceAndProcessAsSensorName(t *testing.T) {
|
||||
content := []byte(`<13>2026-03-15T14:03:11+00:00 host123 systemd[1]: Started Example Service`)
|
||||
|
||||
events := ParseSyslog(content, "syslog/info")
|
||||
if len(events) != 1 {
|
||||
t.Fatalf("expected 1 event, got %d", len(events))
|
||||
}
|
||||
if events[0].Source != "syslog" {
|
||||
t.Fatalf("expected syslog source, got %#v", events[0])
|
||||
}
|
||||
if events[0].SensorName != "systemd[1]" {
|
||||
t.Fatalf("expected process name in sensor/component slot, got %#v", events[0])
|
||||
}
|
||||
}
|
||||
@@ -165,7 +165,10 @@ func TestParseIDLLog_ParsesStructuredJSONLine(t *testing.T) {
|
||||
if events[0].ID != "17FFB002" {
|
||||
t.Fatalf("expected event ID 17FFB002, got %q", events[0].ID)
|
||||
}
|
||||
if events[0].Source != "PCIE" {
|
||||
t.Fatalf("expected source PCIE, got %q", events[0].Source)
|
||||
if events[0].Source != "BMC" {
|
||||
t.Fatalf("expected BMC source for IDL event, got %q", events[0].Source)
|
||||
}
|
||||
if events[0].SensorType != "pcie" {
|
||||
t.Fatalf("expected component type pcie, got %#v", events[0])
|
||||
}
|
||||
}
|
||||
|
||||
2
internal/parser/vendors/inspur/idl.go
vendored
2
internal/parser/vendors/inspur/idl.go
vendored
@@ -60,7 +60,7 @@ func ParseIDLLog(content []byte) []models.Event {
|
||||
events = append(events, models.Event{
|
||||
ID: eventID,
|
||||
Timestamp: ts,
|
||||
Source: component,
|
||||
Source: "BMC",
|
||||
SensorType: strings.ToLower(component),
|
||||
SensorName: sensorName,
|
||||
EventType: eventType,
|
||||
|
||||
1
internal/parser/vendors/inspur/parser.go
vendored
1
internal/parser/vendors/inspur/parser.go
vendored
@@ -217,6 +217,7 @@ func (p *Parser) Parse(files []parser.ExtractedFile) (*models.AnalysisResult, er
|
||||
// Apply RAID disk serials from audit.log (authoritative: last non-NULL SN change).
|
||||
// These override redis/component.log serials which may be stale after disk replacement.
|
||||
applyRAIDSlotSerials(result.Hardware, raidSlotSerials)
|
||||
parser.ApplyManufacturedYearWeekFromFRU(result.FRU, result.Hardware)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
|
||||
4
internal/parser/vendors/inspur/syslog.go
vendored
4
internal/parser/vendors/inspur/syslog.go
vendored
@@ -48,9 +48,9 @@ func ParseSyslog(content []byte, sourcePath string) []models.Event {
|
||||
event := models.Event{
|
||||
ID: generateEventID(sourcePath, lineNum),
|
||||
Timestamp: timestamp,
|
||||
Source: matches[4],
|
||||
Source: "syslog",
|
||||
SensorType: "syslog",
|
||||
SensorName: matches[3],
|
||||
SensorName: matches[4],
|
||||
Description: matches[5],
|
||||
Severity: severity,
|
||||
RawData: line,
|
||||
|
||||
Reference in New Issue
Block a user