47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
// Package collector runs all hardware collectors and merges results
|
||
// into a single HardwareSnapshot. Each sub-collector is independent:
|
||
// a failure in one does not abort the others.
|
||
package collector
|
||
|
||
import (
|
||
"bee/audit/internal/schema"
|
||
"log/slog"
|
||
"time"
|
||
)
|
||
|
||
// Run executes all collectors and returns the combined snapshot.
|
||
// Partial failures are logged as warnings; collection always completes.
|
||
func Run() schema.HardwareIngestRequest {
|
||
start := time.Now()
|
||
slog.Info("audit started")
|
||
|
||
snap := schema.HardwareSnapshot{}
|
||
|
||
board, biosFW := collectBoard()
|
||
snap.Board = board
|
||
snap.Firmware = append(snap.Firmware, biosFW...)
|
||
|
||
cpus, cpuFW := collectCPUs(snap.Board.SerialNumber)
|
||
snap.CPUs = cpus
|
||
snap.Firmware = append(snap.Firmware, cpuFW...)
|
||
|
||
snap.Memory = collectMemory()
|
||
snap.Storage = collectStorage()
|
||
snap.PCIeDevices = collectPCIe()
|
||
snap.PowerSupplies = collectPSUs()
|
||
|
||
// remaining collectors added in steps 1.8 – 1.10
|
||
|
||
slog.Info("audit completed", "duration", time.Since(start).Round(time.Millisecond))
|
||
|
||
sourceType := "livcd"
|
||
protocol := "os-direct"
|
||
|
||
return schema.HardwareIngestRequest{
|
||
SourceType: &sourceType,
|
||
Protocol: &protocol,
|
||
CollectedAt: time.Now().UTC().Format(time.RFC3339),
|
||
Hardware: snap,
|
||
}
|
||
}
|