fix: read a Supermicro X10 with only the OOB license over Redfish (0.3.1)

First run against real hardware over Redfish: an X10DRL-i (BMC 3.91) with
SFT-OOB-LIC. Its Redfish tree is recorded under
tests/fixtures/supermicro-x10drl-i-3.91/redfish, scrubbed.

- A resource refused for want of a further license (403 OemLicenseNotPassed)
  no longer fails the getter. Storage then falls back to SimpleStorage. The
  firmware list falls back to the BMC and BIOS versions when UpdateService
  is withheld.
- get_device_warnings reports bmc_license_partial with the licenses and the
  withheld parts (drives, firmware inventory).
- A placeholder system model ("Super Server") is replaced by the board
  (PartNumber, else the chassis model).
This commit is contained in:
Christian Manivong committed 2026-10-17 09:32:09 +02:00
1 parent 6c60f7ac60
commit adf152ee12
78 files changed
+3237 -24

No files matched your search

@@ -0,0 +1,768 @@
{
"@odata.context": "/redfish/v1/$metadata#Thermal.Thermal",
"@odata.id": "/redfish/v1/Chassis/1/Thermal",
"@odata.type": "#Thermal.v1_4_0.Thermal",
"Fans": [
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/0",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRange": 0,
"MemberId": "0",
"MinReadingRange": 0,
"Name": "FAN1",
"PhysicalContext": "Fan",
"Reading": 0,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 65,
"Status": {
"State": "Absent"
},
"UpperThresholdCritical": 0,
"UpperThresholdFatal": 0,
"UpperThresholdNonCritical": 0
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/1",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 500,
"LowerThresholdFatal": 300,
"LowerThresholdNonCritical": 700,
"MaxReadingRange": 25600,
"MemberId": "1",
"MinReadingRange": 200,
"Name": "FAN2",
"PhysicalContext": "Fan",
"Reading": 6900,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 66,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 25400,
"UpperThresholdFatal": 25500,
"UpperThresholdNonCritical": 25300
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/2",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 500,
"LowerThresholdFatal": 300,
"LowerThresholdNonCritical": 700,
"MaxReadingRange": 25600,
"MemberId": "2",
"MinReadingRange": 200,
"Name": "FAN3",
"PhysicalContext": "Fan",
"Reading": 7500,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 67,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 25400,
"UpperThresholdFatal": 25500,
"UpperThresholdNonCritical": 25300
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/3",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 500,
"LowerThresholdFatal": 300,
"LowerThresholdNonCritical": 700,
"MaxReadingRange": 25600,
"MemberId": "3",
"MinReadingRange": 200,
"Name": "FAN4",
"PhysicalContext": "Fan",
"Reading": 7000,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 68,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 25400,
"UpperThresholdFatal": 25500,
"UpperThresholdNonCritical": 25300
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/4",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRange": 0,
"MemberId": "4",
"MinReadingRange": 0,
"Name": "FAN5",
"PhysicalContext": "Fan",
"Reading": 0,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 69,
"Status": {
"State": "Absent"
},
"UpperThresholdCritical": 0,
"UpperThresholdFatal": 0,
"UpperThresholdNonCritical": 0
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/5",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRange": 0,
"MemberId": "5",
"MinReadingRange": 0,
"Name": "FAN6",
"PhysicalContext": "Fan",
"Reading": 0,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 70,
"Status": {
"State": "Absent"
},
"UpperThresholdCritical": 0,
"UpperThresholdFatal": 0,
"UpperThresholdNonCritical": 0
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/6",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRange": 0,
"MemberId": "6",
"MinReadingRange": 0,
"Name": "FANA",
"PhysicalContext": "Fan",
"Reading": 0,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 71,
"Status": {
"State": "Absent"
},
"UpperThresholdCritical": 0,
"UpperThresholdFatal": 0,
"UpperThresholdNonCritical": 0
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Fans/7",
"@odata.type": "#Thermal.v1_4_0.Fan",
"LowerThresholdCritical": 500,
"LowerThresholdFatal": 300,
"LowerThresholdNonCritical": 700,
"MaxReadingRange": 25600,
"MemberId": "7",
"MinReadingRange": 200,
"Name": "FANB",
"PhysicalContext": "Fan",
"Reading": 5100,
"ReadingUnits": "RPM",
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"SensorNumber": 72,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 25400,
"UpperThresholdFatal": 25500,
"UpperThresholdNonCritical": 25300
}
],
"Id": "Thermal",
"Name": "Thermal",
"Temperatures": [
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/0",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRangeTemp": 87,
"MemberId": "0",
"MinReadingRangeTemp": -2,
"Name": "CPU1 Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 33,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 1,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 85,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/1",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 0,
"LowerThresholdFatal": 0,
"LowerThresholdNonCritical": 0,
"MaxReadingRangeTemp": 87,
"MemberId": "1",
"MinReadingRangeTemp": -2,
"Name": "CPU2 Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 41,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 2,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 85,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/2",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -8,
"LowerThresholdFatal": -11,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 102,
"MemberId": "2",
"MinReadingRangeTemp": -13,
"Name": "PCH Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 28,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 10,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 95,
"UpperThresholdFatal": 100,
"UpperThresholdNonCritical": 90
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/3",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 92,
"MemberId": "3",
"MinReadingRangeTemp": -11,
"Name": "System Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 18,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 11,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/4",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 92,
"MemberId": "4",
"MinReadingRangeTemp": -11,
"Name": "Peripheral Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 39,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 12,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/5",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "5",
"MinReadingRangeTemp": -11,
"Name": "Vcpu1VRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 28,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 16,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/6",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "6",
"MinReadingRangeTemp": -11,
"Name": "Vcpu2VRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 40,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 17,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/7",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "7",
"MinReadingRangeTemp": -11,
"Name": "VmemABVRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 25,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 18,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/8",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "8",
"MinReadingRangeTemp": -11,
"Name": "VmemCDVRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 23,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 19,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/9",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "9",
"MinReadingRangeTemp": -11,
"Name": "VmemEFVRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 37,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 20,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/10",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": -7,
"LowerThresholdFatal": -9,
"LowerThresholdNonCritical": -5,
"MaxReadingRangeTemp": 107,
"MemberId": "10",
"MinReadingRangeTemp": -11,
"Name": "VmemGHVRM Temp",
"PhysicalContext": "CPU",
"ReadingCelsius": 35,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1"
},
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"SensorNumber": 21,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 100,
"UpperThresholdFatal": 105,
"UpperThresholdNonCritical": 95
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/11",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "11",
"MinReadingRangeTemp": -1,
"Name": "P1-DIMMA1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 26,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 176,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/12",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "12",
"MinReadingRangeTemp": -1,
"Name": "P1-DIMMB1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 24,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 180,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/13",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "13",
"MinReadingRangeTemp": -1,
"Name": "P1-DIMMC1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 25,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 184,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/14",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "14",
"MinReadingRangeTemp": -1,
"Name": "P1-DIMMD1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 22,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/1"
}
],
"SensorNumber": 188,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/15",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "15",
"MinReadingRangeTemp": -1,
"Name": "P2-DIMME1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 27,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 208,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/16",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "16",
"MinReadingRangeTemp": -1,
"Name": "P2-DIMMF1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 28,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 212,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/17",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "17",
"MinReadingRangeTemp": -1,
"Name": "P2-DIMMG1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 29,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 216,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
},
{
"@odata.id": "/redfish/v1/Chassis/1/Thermal#/Temperatures/18",
"@odata.type": "#Thermal.v1_4_0.Temperature",
"LowerThresholdCritical": 2,
"LowerThresholdFatal": 1,
"LowerThresholdNonCritical": 4,
"MaxReadingRangeTemp": 92,
"MemberId": "18",
"MinReadingRangeTemp": -1,
"Name": "P2-DIMMH1 Temp",
"PhysicalContext": "Memory",
"ReadingCelsius": 30,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Processors/2"
}
],
"SensorNumber": 220,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UpperThresholdCritical": 85,
"UpperThresholdFatal": 90,
"UpperThresholdNonCritical": 80
}
]
}