Redfish Cheatsheet
Redfish Data Model
All resources are linked from a service entry point (root), always located at
URL /redfish/v1
. Major resource types are structured in “collections” to allow
for standalone, multi-node, or aggregated rack-level systems. And additional
related resources fan out from members within these collections.
There are three main collections:
- ComputerSystem: properties expected from an OS console
- Items needed to run the “computer”
- Roughly a logical view of a computer system as seen from the OS
- Chassis: properties needed to locate the unit with your hands
- Items needed to identify, install or service the “computer”
- Roughly a physical view of a computer system as seen by human
- Managers: properties needed to perform administrative functions
- AKA: the systems management subsystem (BMC)
Authentication
Simple Authentication
Just add -u
with account and password arguments in each Redfish API request if
you’re using curl
.
Session-based Authentication
You must retrieve a token from the session service to do the operations you want later.
$ export bmc_ip="100.74.41.67"
$ curl -k -X POST -D headers.txt https://${bmc_ip}/redfish/v1/SessionService/Sessions -d '{"UserName": "ADMIN", "Password": "ADMIN"}'
{
"@odata.context": "/redfish/v1/$metadata#Session.Session",
"@odata.type": "#Session.v1_0_0.Session",
"@odata.id": "/redfish/v1/SessionService/Sessions/1",
"Id": "1",
"Name": "User Session",
"Description": "Manager User Session",
"UserName": "ADMIN",
"Oem": {}
}
$ cat headers.txt
HTTP/1.1 201 Created
Strict-Transport-Security: max-age=31536000; includeSubdomains
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
OData-Version: 4.0
X-Auth-Token: d4ug1poq9btelo7ju2tqhyfko6xcqa0b
Location: /redfish/v1/SessionService/Sessions/1
Content-Length: 246
Content-Type: application/json
Date: Fri, 27 Dec 2019 05:06:45 GMT
$ export bmc_token="kuqk6u4n6hv1hwzifxswsb104qv6mnnc"
Also there is a way to remove the session we’ve just established, this is so called “logout”:
$ curl -k -H "X-Auth-Token: ${bmc_token}" -X DELETE https://${bmc_ip}/redfish/v1/SessionService/Sessions/1
{"Success":{"code":"Base.v1_4_0.Success","Message":"Successfully Completed Request."}}
Normal Get Operations
$ curl -k -H "X-Auth-Token: ${bmc_token}" -X GET https://${bmc_ip}/redfish/v1/Systems/1
{
"@odata.context": "/redfish/v1/$metadata#ComputerSystem.ComputerSystem",
"@odata.type": "#ComputerSystem.v1_3_1.ComputerSystem",
"@odata.id": "/redfish/v1/Systems/1",
"Id": "1",
"Name": "System",
"Description": "Description of server",
"Status": {
"State": "Enabled",
"Health": "Critical"
},
"SerialNumber": "A298389X9B10165",
"PartNumber": "SYS-2029GP-TR",
"SystemType": "Physical",
"BiosVersion": "3.1a",
"Manufacturer": "Supermicro",
"Model": "SYS-2029GP-TR",
"SKU": "099515D9",
"UUID": "009C065C-4200-EA11-8000-AC1F6BBC6E02",
"ProcessorSummary": {
"Count": 2,
"Model": "Intel(R) Xeon(R) processor",
"Status": {
"State": "Enabled",
"Health": "Critical"
}
},
"MemorySummary": {
"TotalSystemMemoryGiB": 768,
"Status": {
"State": "Enabled",
"Health": "Critical"
}
},
"IndicatorLED": "Off",
"PowerState": "On",
"Boot": {
"BootSourceOverrideEnabled": "Disabled",
"BootSourceOverrideMode": "Legacy",
"BootSourceOverrideTarget": "None",
"[email protected]": [
"None",
"Pxe",
"Floppy",
"Cd",
"Usb",
"Hdd",
"BiosSetup"
]
},
"Processors": {
"@odata.id": "/redfish/v1/Systems/1/Processors"
},
"Memory": {
"@odata.id": "/redfish/v1/Systems/1/Memory"
},
"EthernetInterfaces": {
"@odata.id": "/redfish/v1/Systems/1/EthernetInterfaces"
},
"SimpleStorage": {
"@odata.id": "/redfish/v1/Systems/1/SimpleStorage"
},
"Storage": {
"@odata.id": "/redfish/v1/Systems/1/Storage"
},
"LogServices": {
"@odata.id": "/redfish/v1/Systems/1/LogServices"
},
"SecureBoot": {
"@odata.id": "/redfish/v1/Systems/1/SecureBoot"
},
"PCIeDevices": [
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC1"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC2"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC3"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC4"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/GPU1"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/GPU2"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/GPU3"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/GPU4"
}
],
"PCIeFunctions": [
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC2/Functions/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC2/Functions/2"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC3/Functions/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC3/Functions/2"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC4/Functions/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/NIC4/Functions/2"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/GPU1/Functions/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/GPU2/Functions/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/GPU3/Functions/1"
},
{
"@odata.id": "/redfish/v1/Systems/1/PCIeDevices/GPU4/Functions/1"
}
],
"Links": {
"Chassis": [
{
"@odata.id": "/redfish/v1/Chassis/1"
}
],
"ManagedBy": [
{
"@odata.id": "/redfish/v1/Managers/1"
}
],
"Oem": {}
},
"Actions": {
"Oem": {},
"#ComputerSystem.Reset": {
"target": "/redfish/v1/Systems/1/Actions/ComputerSystem.Reset",
"@Redfish.ActionInfo": "/redfish/v1/Systems/1/ResetActionInfo"
}
},
"Oem": {
"Supermicro": {
"@odata.type": "#SmcSystemExtensions.v1_0_0.System",
"SmcNodeManager": {
"@odata.id": "/redfish/v1/Systems/1/SmcNodeManager"
}
}
}
}
Event Service
The event service is a new alert mechanism for Redfish. This alert will be sent out through HTTP or HTTPS to a web service that is subscribed to the service.