DMTF / Redfish-Interface-Emulator

The Redfish Interface Emulator can emulate a Redfish-based interface statically (GET) or dynamically (POST, PATCH, DELETE)
Other
65 stars 25 forks source link

/redfish/v1/Systems/437XR1138R2 - BIOS is located in the wrong path #119

Closed commonism closed 6 months ago

commonism commented 6 months ago

BIOs is defined to be located in …/BIOS instead of …/Bios as defined in the spec:

curl -s -u root:123 --header "Accept: application/json" -H "Content-Type: application/json" -k http://127.0.0.1:5000/redfish/v1/Systems/437XR1138R2 | jq  '.Bios["@odata.id"]'

"/redfish/v1/Systems/437XR1138R2/BIOS"

The links to the Settings & Actions are misplaced as well

curl -s -u root:123 --header "Accept: application/json" -H "Content-Type: application/json" -k http://127.0.0.1:5000/redfish/v1/Systems/437XR1138R2/BIOS | jq '..|select(contains("/BIOS")?)'
"/redfish/v1/Systems/437XR1138R2/BIOS/Settings"
"/redfish/v1/Systems/437XR1138R2/BIOS/Actions/Bios.ResetBios"
"/redfish/v1/Systems/437XR1138R2/BIOS/Actions/Bios.ChangePassword"
"/redfish/v1/Systems/437XR1138R2/BIOS"
jautor commented 6 months ago

The static mockup included in the package was copied from the "public-rackmount1" mockup in DSP2043, but the copy has not been updated to reflect fixes or enhancements in that mockup...

Note that the emulator can use any mockup tree you choose. If you download DSP2043, you can serve up the "modern" verison of public-rackmount1.

Regardless, the package should be updated with the most recent "public-rackmount1" to make this current, or perhaps it should just be removed from the package as the mockups are readily available.

jcleung5549 commented 6 months ago

The emulator needs some mockup so the user doesn't need to perform another step before issuing the first Redfish requests. Otherwise, the emulator starts running unpopulated, the user issues a simple GET request and gets a 404 - and decides the Emulator is broken.

commonism commented 6 months ago

I'm looking into using the redfish interface emulator docker container for unit testing. I was unaware I'm expected to update mockups. I expected its protocol implementation to be validated accordingly, maybe even match the latest revision of the specification.

I've already evaluated Swordfish-API-Emulator as an alternative. Got mixed results as well.

Please let me know what I can expect this emulator to provide so I know what type of inconsistency with the protocol specification can be considered a bug.

jcleung5549 commented 6 months ago

Oh, you're expecting a turnkey emulator which emulates a Redfish interface. The Redfish Interface Emulator is definitely not turnkey. A turnkey emulation of the Redfish Interface would be expected to keep up with the Redfish model extension, which would be labor intensive.

It is a framework which others can extend. It has found use in understanding the behavior of proposed extensions to the interface - as Swordfish has done for NVMe-over-Fabric.

There have been attempts to build a BMC Redfish emulator, but without constant updates, it ends up being a snapshot of the interface in time - https://github.com/ODIM-Project/BMCSimulator

The emulator 'framework' in this repository can emulate a static or dynamic Redfish model.

For static emulation, you need to copy in a mockup. This repository doesn't keep the included mockup up-to-date, since the usage of static emulator in uncertain. The capability is also available in the Mockup-Server and the Profile-Simulator.

For each resource, python code needs to be written to 'emulate' the resource. The rest of README describes how to write the python code, along with the use of codegen to automate the process. The python code for some resources are included as examples.

jcleung5549 commented 6 months ago

If you are a member of the DMTF Redfish Forum, you could access the Redfish Interoperability Lab for testing. The lab hosts platforms with Redfish Service on their BMCs.

mraineri commented 6 months ago

@jcleung5549 I think the request is much more simplistic than what you're suggesting. I think if we fix the Bios-related URIs in the following files, it'll address the issue:

commonism commented 6 months ago

It'll address this issue. I got some more, plenty. But I'll check with the dsp2043 published recently before reporting.

I think it'd be best to remove the mock files from the report and update the docker file to include the instructions to grab the mock files form the dsp. The link in the readme is 404 - https://www.dmtf.org/dsp/DSP2043 is fine.