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,8 @@
{
"@odata.context": "/redfish/v1/$metadata#RoleGroupCollection.RoleGroupCollection",
"@odata.id": "/redfish/v1/Managers/1/ActiveDirectory/RoleGroups",
"@odata.type": "#RoleGroupCollection.RoleGroupCollection",
"Members": [],
"Members@odata.count": 0,
"Name": "Role Group Collection"
}
@@ -0,0 +1,18 @@
{
"@odata.context": "/redfish/v1/$metadata#ActiveDirectory.ActiveDirectory",
"@odata.id": "/redfish/v1/Managers/1/ActiveDirectory",
"@odata.type": "#ActiveDirectory.v1_0_0.ActiveDirectory",
"AuthenticationEnabled": false,
"AuthenticationOverSSLEnabled": false,
"DCSAddress1": "0.0.0.0",
"DCSAddress2": "0.0.0.0",
"DCSAddress3": "0.0.0.0",
"Id": "Active Directory",
"Name": "Active Directory",
"PortNumber": 389,
"RoleGroups": {
"@odata.id": "/redfish/v1/Managers/1/ActiveDirectory/RoleGroups"
},
"Timeout": 0,
"UserDomainName": ""
}
@@ -0,0 +1,56 @@
{
"@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface",
"@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces/1",
"@odata.type": "#EthernetInterface.v1_0_0.EthernetInterface",
"AutoNeg": true,
"Description": "Management Network Interface",
"FullDuplex": true,
"HostName": "server01",
"IPv4Addresses": [
{
"Address": "192.0.2.150",
"AddressOrigin": "DHCP",
"Gateway": "192.0.2.1",
"SubnetMask": "255.255.255.0"
}
],
"IPv6AddressPolicyTable": [
{
"Label": 0,
"Precedence": 50,
"Prefix": "::1/128"
}
],
"IPv6Addresses": [
{
"Address": "fe80::200:5eff:fe00:5313",
"AddressOrigin": "SLAAC",
"AddressState": "Preferred",
"PrefixLength": 64
}
],
"IPv6DefaultGateway": "fe80::200:5eff:fe00:5313",
"IPv6StaticAddresses": [
{
"Address": "fe80::200:5eff:fe00:5313",
"PrefixLength": 64
}
],
"Id": "1",
"InterfaceEnabled": true,
"MACAddress": "00:00:5e:00:53:13",
"MTUSize": 1500,
"Name": "EthernetInterface",
"NameServers": [
"192.0.2.1"
],
"SpeedMbps": 1000,
"Status": {
"Health": "OK",
"State": "Enabled"
},
"VLAN": {
"VLANEnable": false,
"VLANId": 0
}
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#EthernetInterfaceCollection.EthernetInterfaceCollection",
"@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces",
"@odata.type": "#EthernetInterfaceCollection.EthernetInterfaceCollection",
"Description": "Collection of EthernetInterfaces for this Manager",
"Members": [
{
"@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces/1"
}
],
"Members@odata.count": 1,
"Name": "Ethernet Network Interface Collection"
}
@@ -0,0 +1,14 @@
{
"@odata.context": "/redfish/v1/$metadata#FanMode.FanMode",
"@odata.id": "/redfish/v1/Managers/1/FanMode",
"@odata.type": "#FanMode.v1_0_0.FanMode",
"Id": "Fan Mode",
"Mode": "Optimal",
"Mode@Redfish.AllowableValues": [
"Standard",
"FullSpeed",
"Optimal",
"HeavyIO"
],
"Name": "FanMode"
}
@@ -0,0 +1,20 @@
{
"error": {
"@Message.ExtendedInfo": [
{
"Message": "Not licensed to perform this request. The following licenses DCMS were needed",
"MessageArgs": [
"DCMS "
],
"MessageId": "Base.v1_4_0.OemLicenseNotPassed",
"RelatedProperties": [
""
],
"Resolution": "Please activate at least one license in above message.",
"Severity": "Warning"
}
],
"Message": "A general error has occurred. See ExtendedInfo for more information.",
"code": "Base.v1_4_0.GeneralError"
}
}
@@ -0,0 +1,8 @@
{
"@odata.context": "/redfish/v1/$metadata#FilterRuleCollection.FilterRuleCollection",
"@odata.id": "/redfish/v1/Managers/1/IPAccessControl/FilterRules",
"@odata.type": "#FilterRuleCollection.FilterRuleCollection",
"Members": [],
"Members@odata.count": 0,
"Name": "Filter Rule Collection"
}
@@ -0,0 +1,11 @@
{
"@odata.context": "/redfish/v1/$metadata#IPAccessControl.IPAccessControl",
"@odata.id": "/redfish/v1/Managers/1/IPAccessControl",
"@odata.type": "#IPAccessControl.v1_0_0.IPAccessControl",
"FilterRules": {
"@odata.id": "/redfish/v1/Managers/1/IPAccessControl/FilterRules"
},
"Id": "IP Access Control",
"Name": "IP Access Control",
"ServiceEnabled": false
}
@@ -0,0 +1,14 @@
{
"@odata.context": "/redfish/v1/$metadata#LDAP.LDAP",
"@odata.id": "/redfish/v1/Managers/1/LDAP",
"@odata.type": "#LDAP.v1_0_0.LDAP",
"Id": "LDAP",
"LDAPAuthOverSSL": false,
"LDAPDN": "",
"LDAPEnabled": false,
"LDAPPassword": "",
"LDAPPortNumber": 389,
"LDAPSearchbase": "",
"LDAPServerIP": "0.0.0.0",
"Name": "LDAP"
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#MouseMode.MouseMode",
"@odata.id": "/redfish/v1/Managers/1/MouseMode",
"@odata.type": "#MouseMode.v1_0_0.MouseMode",
"Id": "Mouse Mode",
"Mode": "Absolute",
"Mode@Redfish.AllowableValues": [
"Absolute",
"Relative",
"Single"
],
"Name": "MouseMode"
}
@@ -0,0 +1,11 @@
{
"@odata.context": "/redfish/v1/$metadata#NTP.NTP",
"@odata.id": "/redfish/v1/Managers/1/NTP",
"@odata.type": "#NTP.v1_0_0.NTP",
"DaylightSavingTime": true,
"Id": "NTP",
"NTPEnable": true,
"Name": "NTP Service",
"PrimaryNTPServer": "192.0.2.1",
"SecondaryNTPServer": ""
}
@@ -0,0 +1,42 @@
{
"@odata.context": "/redfish/v1/$metadata#ManagerNetworkProtocol.ManagerNetworkProtocol",
"@odata.id": "/redfish/v1/Managers/1/NetworkProtocol",
"@odata.type": "#ManagerNetworkProtocol.v1_0_0.ManagerNetworkProtocol",
"Description": "Manager Network Service Status",
"FQDN": "",
"HTTP": {
"Port": 80,
"ProtocolEnabled": true
},
"HTTPS": {
"Port": 443,
"ProtocolEnabled": true
},
"HostName": "server01",
"IPMI": {
"Port": 623,
"ProtocolEnabled": true
},
"Id": "NetworkProtocol",
"KVMIP": {
"Port": 5900,
"ProtocolEnabled": true
},
"Name": "Manager Network Protocol",
"SNMP": {
"Port": 161,
"ProtocolEnabled": true
},
"SSH": {
"Port": 22,
"ProtocolEnabled": true
},
"Status": {
"Health": "OK",
"State": "Enabled"
},
"VirtualMedia": {
"Port": 623,
"ProtocolEnabled": true
}
}
@@ -0,0 +1,11 @@
{
"@odata.context": "/redfish/v1/$metadata#RADIUS.RADIUS",
"@odata.id": "/redfish/v1/Managers/1/RADIUS",
"@odata.type": "#RADIUS.v1_0_1.RADIUS",
"Id": "RADIUS",
"Name": "RADIUS",
"RadiusEnabled": false,
"RadiusPortNumber": 1812,
"RadiusSecret": "null",
"RadiusServerIP": "0.0.0.0"
}
@@ -0,0 +1,8 @@
{
"@odata.context": "/redfish/v1/$metadata#SMCRAKP.SMCRAKP",
"@odata.id": "/redfish/v1/Managers/1/SMCRAKP",
"@odata.type": "#SMCRAKP.v1_0_0.SMCRAKP",
"Id": "SMC RAKP",
"Mode": "Disabled",
"Name": "SMCRAKP"
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#SMTP.SMTP",
"@odata.id": "/redfish/v1/Managers/1/SMTP",
"@odata.type": "#SMTP.v1_0_0.SMTP",
"Id": "SMTP",
"Name": "SMTP",
"SmtpPassword": "null",
"SmtpPortNumber": 587,
"SmtpSSLEnabled": false,
"SmtpSenderAddress": "",
"SmtpServer": "",
"SmtpUserName": ""
}
@@ -0,0 +1,10 @@
{
"@odata.context": "/redfish/v1/$metadata#SNMPv2.SNMPv2",
"@odata.id": "/redfish/v1/Managers/1/SNMP/SNMPv2",
"@odata.type": "#SNMPv2.v1_0_0.SNMPv2",
"Id": "1",
"Name": "SNMPv2",
"ROCommunity": "community-ro",
"RWCommunity": "community-rw",
"Snmpv2Enabled": true
}
@@ -0,0 +1,21 @@
{
"@odata.context": "/redfish/v1/$metadata#SNMPv3.SNMPv3",
"@odata.id": "/redfish/v1/Managers/1/SNMP/SNMPv3",
"@odata.type": "#SNMPv3.v1_0_0.SNMPv3",
"AuthKey": "",
"AuthProtocol": "MD5",
"AuthProtocol@Redfish.AllowableValues": [
"SHA1",
"MD5"
],
"Id": "1",
"Name": "SNMPv3",
"PrivateKey": "",
"PrivateProtocol": "DES",
"PrivateProtocol@Redfish.AllowableValues": [
"AES",
"DES"
],
"Snmpv3Enabled": false,
"UserName": ""
}
@@ -0,0 +1,14 @@
{
"@odata.context": "/redfish/v1/$metadata#SNMP.SNMP",
"@odata.id": "/redfish/v1/Managers/1/SNMP",
"@odata.type": "#SNMP.v1_0_0.SNMP",
"Id": "1",
"Name": "SNMP",
"SNMPv2": {
"@odata.id": "/redfish/v1/Managers/1/SNMP/SNMPv2"
},
"SNMPv3": {
"@odata.id": "/redfish/v1/Managers/1/SNMP/SNMPv3"
},
"SnmpEnabled": true
}
@@ -0,0 +1,15 @@
{
"@odata.context": "/redfish/v1/$metadata#SerialInterface.SerialInterface",
"@odata.id": "/redfish/v1/Managers/1/SerialInterfaces/1",
"@odata.type": "#SerialInterface.v1_0_0.SerialInterface",
"BitRate": "115200",
"DataBits": "8",
"Description": "Serial over LAN",
"FlowControl": "None",
"Id": "1",
"InterfaceEnabled": true,
"Name": "SerialInterface",
"Parity": "None",
"SignalType": "Rs232",
"StopBits": "1"
}
@@ -0,0 +1,13 @@
{
"@odata.context": "/redfish/v1/$metadata#SerialInterfaceCollection.SerialInterfaceCollection",
"@odata.id": "/redfish/v1/Managers/1/SerialInterfaces",
"@odata.type": "#SerialInterfaceCollection.SerialInterfaceCollection",
"Description": "Collection of Serial Interfaces for this Manager",
"Members": [
{
"@odata.id": "/redfish/v1/Managers/1/SerialInterfaces/1"
}
],
"Members@odata.count": 1,
"Name": "Serial Interface Collection"
}
@@ -0,0 +1,8 @@
{
"@odata.context": "/redfish/v1/$metadata#Snooping.Snooping",
"@odata.id": "/redfish/v1/Managers/1/Snooping",
"@odata.type": "#Snooping.v1_0_0.Snooping",
"Id": "Snooping",
"Name": "Snooping",
"PostCode": "aa"
}
@@ -0,0 +1,10 @@
{
"@odata.context": "/redfish/v1/$metadata#Syslog.Syslog",
"@odata.id": "/redfish/v1/Managers/1/Syslog",
"@odata.type": "#Syslog.v1_0_0.Syslog",
"EnableSyslog": false,
"Id": "Syslog",
"Name": "Syslog",
"SyslogPortNumber": 0,
"SyslogServerIP": ""
}
@@ -0,0 +1,20 @@
{
"error": {
"@Message.ExtendedInfo": [
{
"Message": "Not licensed to perform this request. The following licenses DCMS were needed",
"MessageArgs": [
"DCMS "
],
"MessageId": "Base.v1_4_0.OemLicenseNotPassed",
"RelatedProperties": [
""
],
"Resolution": "Please activate at least one license in above message.",
"Severity": "Warning"
}
],
"Message": "A general error has occurred. See ExtendedInfo for more information.",
"code": "Base.v1_4_0.GeneralError"
}
}
@@ -0,0 +1,16 @@
{
"@odata.context": "/redfish/v1/$metadata#VirtualMediaCollection.VirtualMediaCollection",
"@odata.id": "/redfish/v1/Managers/1/VM1",
"@odata.type": "#VirtualMediaCollection.VirtualMediaCollection",
"Description": "Collection of Virtual Media for this System",
"Members@odata.count": 0,
"Name": "Virtual Media Collection",
"Oem": {
"Supermicro": {
"@odata.type": "#SmcVirtualMediaExtensions.v1_0_0.VirtualMediaCollection",
"VirtualMediaConfig": {
"@odata.id": "/redfish/v1/Managers/1/VM1/CfgCD"
}
}
}
}
@@ -0,0 +1,119 @@
{
"@odata.context": "/redfish/v1/$metadata#Manager.Manager",
"@odata.id": "/redfish/v1/Managers/1",
"@odata.type": "#Manager.v1_3_2.Manager",
"Actions": {
"#Manager.Reset": {
"target": "/redfish/v1/Managers/1/Actions/Manager.Reset"
},
"Oem": {
"#ManagerConfig.Reset": {
"target": "/redfish/v1/Managers/1/Actions/Oem/ManagerConfig.Reset"
}
}
},
"CommandShell": {
"ConnectTypesSupported": [
"SSH"
],
"MaxConcurrentSessions": 0,
"ServiceEnabled": true
},
"DateTime": "2026-10-17T09:24:32+01:00",
"DateTimeLocalOffset": "+01:00",
"Description": "BMC",
"EthernetInterfaces": {
"@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces"
},
"FirmwareVersion": "3.91",
"GraphicalConsole": {
"ConnectTypesSupported": [
"KVMIP"
],
"MaxConcurrentSessions": 4,
"ServiceEnabled": true
},
"Id": "1",
"Links": {
"ManagerForChassis": [
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"ManagerForServers": [
{
"@odata.id": "/redfish/v1/Systems/1"
}
],
"Oem": {}
},
"ManagerType": "BMC",
"Model": "ASPEED",
"Name": "Manager",
"NetworkProtocol": {
"@odata.id": "/redfish/v1/Managers/1/NetworkProtocol"
},
"Oem": {
"Supermicro": {
"@odata.type": "#SmcManagerExtensions.v1_0_0.Manager",
"ActiveDirectory": {
"@odata.id": "/redfish/v1/Managers/1/ActiveDirectory"
},
"FanMode": {
"@odata.id": "/redfish/v1/Managers/1/FanMode"
},
"IKVM": {
"@odata.id": "/redfish/v1/Managers/1/IKVM"
},
"IPAccessControl": {
"@odata.id": "/redfish/v1/Managers/1/IPAccessControl"
},
"LDAP": {
"@odata.id": "/redfish/v1/Managers/1/LDAP"
},
"MouseMode": {
"@odata.id": "/redfish/v1/Managers/1/MouseMode"
},
"NTP": {
"@odata.id": "/redfish/v1/Managers/1/NTP"
},
"RADIUS": {
"@odata.id": "/redfish/v1/Managers/1/RADIUS"
},
"SMCRAKP": {
"@odata.id": "/redfish/v1/Managers/1/SMCRAKP"
},
"SMTP": {
"@odata.id": "/redfish/v1/Managers/1/SMTP"
},
"SNMP": {
"@odata.id": "/redfish/v1/Managers/1/SNMP"
},
"Snooping": {
"@odata.id": "/redfish/v1/Managers/1/Snooping"
},
"Syslog": {
"@odata.id": "/redfish/v1/Managers/1/Syslog"
}
}
},
"SerialConsole": {
"ConnectTypesSupported": [
"SSH",
"IPMI"
],
"MaxConcurrentSessions": 1,
"ServiceEnabled": true
},
"SerialInterfaces": {
"@odata.id": "/redfish/v1/Managers/1/SerialInterfaces"
},
"Status": {
"Health": "OK",
"State": "Enabled"
},
"UUID": "00000000-0000-0000-0000-00005E005313",
"VirtualMedia": {
"@odata.id": "/redfish/v1/Managers/1/VM1"
}
}