BMC readiness after power-on (waitForStablePoweredOnHost): - After initial 1m stabilization, poll BMC inventory readiness before collecting - Ready if MemorySummary.TotalSystemMemoryGiB > 0 OR PCIeDevices.Members non-empty - On failure: wait +60s, retry; on second failure: wait +120s, retry; then warn and proceed - Configurable via LOGPILE_REDFISH_BMC_READY_WAITS (default: 60s,120s) Empty critical collection plan-B retry (EnableEmptyCriticalCollectionRetry): - Hardware inventory collections that returned Members=[] are now re-probed in plan-B - Covers PCIeDevices, NetworkAdapters, Processors, Drives, Storage, EthernetInterfaces - Enabled by default in generic profile (applies to all vendors) Ghost NIC dedup fix (enrichNICsFromNetworkInterfaces): - NetworkInterface entries (e.g. Id=2) that don't match existing NIC slots are now resolved via Links.NetworkAdapter cross-reference to the real Chassis NIC - Prevents duplicate ghost entries (slot=2 "Network Device View") from appearing alongside real NICs (slot="RISER 5 slot 1 (7)") with the same MAC addresses Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
117 lines
2.9 KiB
Go
117 lines
2.9 KiB
Go
package redfishprofile
|
|
|
|
func genericProfile() Profile {
|
|
return staticProfile{
|
|
name: "generic",
|
|
priority: 100,
|
|
safeForFallback: true,
|
|
matchFn: func(MatchSignals) int { return 10 },
|
|
extendAcquisition: func(plan *AcquisitionPlan, _ MatchSignals) {
|
|
ensurePrefetchPolicy(plan, AcquisitionPrefetchPolicy{
|
|
IncludeSuffixes: []string{
|
|
"/Bios",
|
|
"/Processors",
|
|
"/Memory",
|
|
"/Storage",
|
|
"/SimpleStorage",
|
|
"/PCIeDevices",
|
|
"/PCIeFunctions",
|
|
"/Accelerators",
|
|
"/GraphicsControllers",
|
|
"/EthernetInterfaces",
|
|
"/NetworkInterfaces",
|
|
"/NetworkAdapters",
|
|
"/Drives",
|
|
"/Power",
|
|
"/PowerSubsystem/PowerSupplies",
|
|
"/NetworkProtocol",
|
|
"/UpdateService",
|
|
"/UpdateService/FirmwareInventory",
|
|
},
|
|
ExcludeContains: []string{
|
|
"/Fabrics",
|
|
"/Backplanes",
|
|
"/Boards",
|
|
"/Assembly",
|
|
"/Sensors",
|
|
"/ThresholdSensors",
|
|
"/DiscreteSensors",
|
|
"/ThermalConfig",
|
|
"/ThermalSubsystem",
|
|
"/EnvironmentMetrics",
|
|
"/Certificates",
|
|
"/LogServices",
|
|
},
|
|
})
|
|
ensureScopedPathPolicy(plan, AcquisitionScopedPathPolicy{
|
|
SystemCriticalSuffixes: []string{
|
|
"/Bios",
|
|
"/Oem/Public",
|
|
"/Oem/Public/FRU",
|
|
"/Processors",
|
|
"/Memory",
|
|
"/Storage",
|
|
"/PCIeDevices",
|
|
"/PCIeFunctions",
|
|
"/Accelerators",
|
|
"/GraphicsControllers",
|
|
"/EthernetInterfaces",
|
|
"/NetworkInterfaces",
|
|
"/SimpleStorage",
|
|
"/Storage/IntelVROC",
|
|
"/Storage/IntelVROC/Drives",
|
|
"/Storage/IntelVROC/Volumes",
|
|
},
|
|
ChassisCriticalSuffixes: []string{
|
|
"/Oem/Public",
|
|
"/Oem/Public/FRU",
|
|
"/Power",
|
|
"/NetworkAdapters",
|
|
"/PCIeDevices",
|
|
"/Accelerators",
|
|
"/Drives",
|
|
"/Assembly",
|
|
},
|
|
ManagerCriticalSuffixes: []string{
|
|
"/NetworkProtocol",
|
|
},
|
|
SystemSeedSuffixes: []string{
|
|
"/SimpleStorage",
|
|
"/Storage/IntelVROC",
|
|
"/Storage/IntelVROC/Drives",
|
|
"/Storage/IntelVROC/Volumes",
|
|
},
|
|
})
|
|
addPlanPaths(&plan.CriticalPaths,
|
|
"/redfish/v1/UpdateService",
|
|
"/redfish/v1/UpdateService/FirmwareInventory",
|
|
)
|
|
ensureSnapshotMaxDocuments(plan, 100000)
|
|
ensureSnapshotWorkers(plan, 6)
|
|
ensurePrefetchWorkers(plan, 4)
|
|
ensureETABaseline(plan, AcquisitionETABaseline{
|
|
DiscoverySeconds: 8,
|
|
SnapshotSeconds: 90,
|
|
PrefetchSeconds: 20,
|
|
CriticalPlanBSeconds: 20,
|
|
ProfilePlanBSeconds: 15,
|
|
})
|
|
ensurePostProbePolicy(plan, AcquisitionPostProbePolicy{
|
|
EnableNumericCollectionProbe: true,
|
|
})
|
|
ensureRecoveryPolicy(plan, AcquisitionRecoveryPolicy{
|
|
EnableCriticalCollectionMemberRetry: true,
|
|
EnableCriticalSlowProbe: true,
|
|
EnableEmptyCriticalCollectionRetry: true,
|
|
})
|
|
ensureRatePolicy(plan, AcquisitionRatePolicy{
|
|
TargetP95LatencyMS: 900,
|
|
ThrottleP95LatencyMS: 1800,
|
|
MinSnapshotWorkers: 2,
|
|
MinPrefetchWorkers: 1,
|
|
DisablePrefetchOnErrors: true,
|
|
})
|
|
},
|
|
}
|
|
}
|