| 8216fc8a | 10-Feb-2026 |
Ed Tanous <etanous@nvidia.com> |
Be more paranoid in json parsing
When taking json directly from a user, we should set some limits on parsing depth as well as total number of value elements. Value elements are considered any indiv
Be more paranoid in json parsing
When taking json directly from a user, we should set some limits on parsing depth as well as total number of value elements. Value elements are considered any individual value, the start of an array, the start of a dictionary, or null. This is to prevent flooding type attacks creating large number of objects, while still keeping under the depth 10 cap. This commit makes use of the nlohmann sax parse to handle this by injecting a new error handler in between that will impose new limits.
Currently this sets the depth limit to 10 and the total number of keys to 500; These are intentionally high, and could be tuned or expanded on in the future.
Tested: Unit tests pass.
Change-Id: I789543679e22b0b0ce0b2b0b71f31377b0759cd7 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
| 3132dace | 07-Oct-2025 |
Harshit Aghera <haghera@nvidia.com> |
Fabric: add support for PCIe Switch Port URI
This patch enable support for following properties for Port of a PCIe Switch. [1] - PortProtocol - PortType - CurrentSpeedGbps - ActiveWidth
One of the
Fabric: add support for PCIe Switch Port URI
This patch enable support for following properties for Port of a PCIe Switch. [1] - PortProtocol - PortType - CurrentSpeedGbps - ActiveWidth
One of the devices that gets enabled with this patch is Nvidia ConnectX devices, which are network cards featuring an integrated PCIe switch. These devices combine both PCIe ports and network ports in a single unit. Since such devices don't strictly qualify as Fabric Adapters, the Switch URI is used instead of the FabricAdapter URI.
Port schema only allows certain URIs as Port URI. URI /redfish/v1/Fabrics/{FabricId}/Switches/{SwitchId}/Ports/{PortId} seems most appropriate choice for PCIe Switch Port. [1]
The Fabric resource is modeled similarly to the System resource, meaning that only one Fabric resource will exist for each BMC. Route handler for collections and each individual components are added in this patch for each URI resource under /redfish/v1/Fabrics.
DBus Interface "xyz.openbmc_project.Inventory.Item.PCIeSwitch" is used to identify the Switch resources. Association between Switch and Port is `connecting` and `connected_to`.
Feature like Port Metrics properties (for PCIe Error Counters) can be added in future at Port Metric URI.
dbus-sensors patches - https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/84079 https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/83202
Tested: Build an image for nvl32-obmc machine with the following patch cherry picked.
https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/84079 https://gerrit.openbmc.org/c/openbmc/openbmc/+/85490
The openbmc patch cherry-picks the following patches that are currently under review.
``` 1. device tree https://lore.kernel.org/all/aRbLqH8pLWCQryhu@molberding.nvidia.com/ 2. mctpd patches https://github.com/CodeConstruct/mctp/pull/85 3. u-boot changes https://lore.kernel.org/openbmc/20251121-msx4-v1-0-fc0118b666c1@nvidia.com/T/#t 4. kernel changes as specified in the openbmc patch (for espi) 5. entity-manager changes https://gerrit.openbmc.org/c/openbmc/entity-manager/+/85455 6. platform-init changes https://gerrit.openbmc.org/c/openbmc/platform-init/+/85456 7. spi changes https://lore.kernel.org/all/20251121-w25q01jv_fixup-v1-1-3d175050db73@nvidia.com/ ```
redfish service validator is passing.
``` $ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/ { "@odata.id": "/redfish/v1/Fabrics", "@odata.type": "#FabricCollection.FabricCollection", "Members": [ { "@odata.id": "/redfish/v1/Fabrics/fabric" } ], "Members@odata.count": 1, "Name": "Fabric Collection" }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/ { "@odata.id": "/redfish/v1/Fabrics/fabric", "@odata.type": "#Fabric.v1_2_0.Fabric", "Id": "fabric", "Name": "fabric Fabric", "Switches": { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches" } }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/Switches/ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches", "@odata.type": "#SwitchCollection.SwitchCollection", "Members": [ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_1" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_2" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_3" } ], "Members@odata.count": 4, "Name": "fabric Switch Collection" }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0 { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0", "@odata.type": "#Switch.v1_7_0.Switch", "Id": "Nvidia_ConnectX_0", "Name": "Nvidia_ConnectX_0", "Ports": { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports" }, "Status": { "Health": "OK", "State": "Enabled" } }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports", "@odata.type": "#PortCollection.PortCollection", "Members": [ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/DOWN_0" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/DOWN_1" }, { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/UP_0" } ], "Members@odata.count": 3, "Name": "Nvidia_ConnectX_0 Port Collection" }%
$ curl -k -u 'root:0penBmc' https://${bmc_ip}/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/UP_0/ { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/UP_0", "@odata.type": "#Port.v1_4_0.Port", "ActiveWidth": 8, "CurrentSpeedGbps": 32.0, "Id": "UP_0", "Metrics": { "@odata.id": "/redfish/v1/Fabrics/fabric/Switches/Nvidia_ConnectX_0/Ports/UP_0/Metrics" }, "Name": "Nvidia_ConnectX_0 UP_0 Port", "PortProtocol": "PCIe", "PortType": "UpstreamPort", "Status": { "Health": "OK", "State": "Enabled" } }% ```
[1]: https://redfish.dmtf.org/schemas/v1/Port_v1.xml
Change-Id: I52f4ca62b4953f6196c589e340602a0d7885d9c1 Signed-off-by: Harshit Aghera <haghera@nvidia.com>
show more ...
|
| 76c2ad64 | 03-Feb-2023 |
Ed Tanous <ed@tanous.net> |
Remove usages of nlohmann::json::begin()
nlohmann::json::begin() throws an uncaught exception.
Tested: Redfish service validator passes.
Signed-off-by: Ed Tanous <ed@tanous.net> Change-Id: I08244b
Remove usages of nlohmann::json::begin()
nlohmann::json::begin() throws an uncaught exception.
Tested: Redfish service validator passes.
Signed-off-by: Ed Tanous <ed@tanous.net> Change-Id: I08244b0787cd4d6e592b0731196490a5160aba62
show more ...
|
| 96a194c4 | 18-Aug-2025 |
Ed Tanous <ed@tanous.net> |
Implement modernize-use-ranges
This tidy check can transform code to use std::ranges. Enable the check, apply the fixes it proposes.
Tested: Redfish service validator passes in qemu
Change-Id: I3
Implement modernize-use-ranges
This tidy check can transform code to use std::ranges. Enable the check, apply the fixes it proposes.
Tested: Redfish service validator passes in qemu
Change-Id: I3f21b27d3d30277f71b9c8a2c584a22bc16865e9 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
| 32ea63d3 | 03-Sep-2025 |
Ed Tanous <etanous@nvidia.com> |
Use boost::urls::format
boost::urls::format is specifically meant for URL construction. It handles encoding like percentage encoding which std::format does not.
Change-Id: Ib6e6bc8bcf30b138b9311157
Use boost::urls::format
boost::urls::format is specifically meant for URL construction. It handles encoding like percentage encoding which std::format does not.
Change-Id: Ib6e6bc8bcf30b138b93111577d9f2150709dda5c Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
| 6926d430 | 24-Nov-2025 |
Oliver Brewka <oliver.brewka@9elements.com> |
Combine handlers for systems eventlog
Following patch 85522 [1], combine the handlers in systems eventlog.
Tested: Unit tests pass.
[1] https://gerrit.openbmc.org/c/openbmc/bmcweb/+/85522
Change-
Combine handlers for systems eventlog
Following patch 85522 [1], combine the handlers in systems eventlog.
Tested: Unit tests pass.
[1] https://gerrit.openbmc.org/c/openbmc/bmcweb/+/85522
Change-Id: Ib1649de83e64abb289e0379139d0a75466e15257 Signed-off-by: Oliver Brewka <oliver.brewka@9elements.com>
show more ...
|
| c621786e | 24-Nov-2025 |
Ed Tanous <etanous@nvidia.com> |
Combine handlers
Fix one comment made on [1] to combine method calls into a single one.
Tested: Unit tests pass, @Oliver Brewka need your help to sanity check this.
[1] https://gerrit.openbmc.org/
Combine handlers
Fix one comment made on [1] to combine method calls into a single one.
Tested: Unit tests pass, @Oliver Brewka need your help to sanity check this.
[1] https://gerrit.openbmc.org/c/openbmc/bmcweb/+/83355
Change-Id: Iad90d57c6cd0fe3926186f238aba887b88e99c12 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
| 7bf29ab3 | 23-Oct-2025 |
Christopher Meis <christopher.meis@9elements.com> |
redfish-core: Refactor storage.hpp
This change splits out storage controller and storage drive route setup and code into new files and unifies the call of route setup for storage, storage controller
redfish-core: Refactor storage.hpp
This change splits out storage controller and storage drive route setup and code into new files and unifies the call of route setup for storage, storage controller and storage drive collection and single storage controller properties.
Tested: CI ran through without errors, build testing succeeded.
Change-Id: I234eb034205b7e6c3a5f307172019d53d42de6e3 Signed-off-by: Christopher Meis <christopher.meis@9elements.com>
show more ...
|
| a0170837 | 13-Oct-2025 |
Oliver Brewka <oliver.brewka@9elements.com> |
Rename Systems EventLog route handler
Rename the route handler to clearly indicate, that the handler handles the ComputerSystem redfish resource.
Tested: Code compiles.
Change-Id: Ib722427ab53f35b
Rename Systems EventLog route handler
Rename the route handler to clearly indicate, that the handler handles the ComputerSystem redfish resource.
Tested: Code compiles.
Change-Id: Ib722427ab53f35b2270fe6e102614f21fe28ffcb Signed-off-by: Oliver Brewka <oliver.brewka@9elements.com>
show more ...
|
| ab8aaeba | 27-Aug-2025 |
Oliver Brewka <oliver.brewka@9elements.com> |
Add DBus EventLog to Manager
In order to get access to the EventLog on multi-host platforms, add Journal EventLog to Manager. This implementation is based on the discussion we had on patch 76319 [1]
Add DBus EventLog to Manager
In order to get access to the EventLog on multi-host platforms, add Journal EventLog to Manager. This implementation is based on the discussion we had on patch 76319 [1].
TLDR: On multi-host, we technically would have to split the event log on a per host node basis, so that each host node has its own specific event log.
However, this is currently not supported so we had to decide, whether we put it on a specific ComputerSystem, or refactor the current implementation of the EventLog, to allow for the EventLog LogService to be part of the Managers resource. We chose the latter one, because a), it is not clear on which ComputerSystem to put the EventLog, as long as we aren't splitting the event log per host node, and b), if that particular ComputerSystem is not existing at runtime, there would be no access to the EventLog at all.
This feature can be enabled with the redfish-eventlog-location meson option. By default it is set to 'systems', which translates to the EventLog being under the Systems resource. To enable the EventLog under the Managers resource set
``` -Dredfish-eventlog-location=managers ``` This in turn, disables the EventLog under the ComputerSystem resource.
Tested: Redfish validation succeeded for both ComputerSystem and Managers tree.
Patch LogEntry: ``` $ curl -k -X PATCH 'https://'"${BMC}"':'"${BMC_WEBPORT}"'/redfish/v1/Managers/bmc/LogServices/EventLog/Entries/4444' \ -H 'X-Auth-Token: '"$BMCWEB_SESSION_TOKEN"'' \ -H "Content-Type: application/json" -d "{"Resolved":true}"
$ busctl introspect xyz.openbmc_project.Logging /xyz/openbmc_project/logging/entry/4444
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
...
xyz.openbmc_project.Logging.Entry interface - - - .GetEntry method - h - .AdditionalData property a{ss} 5 "CALLOUT_INVENTORY_PATH" "/xyz/open... emits-change writable .EventId property s "" emits-change writable .Id property u 4444 emits-change writable .Message property s "xyz.openbmc_project.Sensor.Threshold... emits-change writable .Resolution property s "" emits-change writable .Resolved property b true emits-change writable
```
Delete LogEntry: ``` $ busctl tree xyz.openbmc_project.Logging ... | |- /xyz/openbmc_project/logging/entry/6498 | |- /xyz/openbmc_project/logging/entry/6499 | |- /xyz/openbmc_project/logging/entry/6500 | |- /xyz/openbmc_project/logging/entry/6501 ...
$ curl -k -X DELETE 'https://'"${BMC}"':4443/redfish/v1/Managers/bmc/LogServices/EventLog/Entries/6500' \ -H 'X-Auth-Token: '"$BMCWEB_SESSION_TOKEN"'' \ -H "Content-Type: application/json"
| |- /xyz/openbmc_project/logging/entry/6498 | |- /xyz/openbmc_project/logging/entry/6499 | |- /xyz/openbmc_project/logging/entry/6501 ```
ClearLog action: ``` $ curl -k -X POST 'https://'"${BMC}"':4443/redfish/v1/Managers/bmc/LogServices/EventLog/Actions/LogService.ClearLog' \ -H 'X-Auth-Token: '"$BMCWEB_SESSION_TOKEN"'' \ -H "Content-Type: application/json"
{ "@Message.ExtendedInfo": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The request completed successfully.", "MessageArgs": [], "MessageId": "Base.1.19.Success", "MessageSeverity": "OK", "Resolution": "None." } ] } ```
[1] https://gerrit.openbmc.org/c/openbmc/bmcweb/+/76319
Change-Id: Ie619af8e10a723aef2e02ef03796851511b05008 Signed-off-by: Oliver Brewka <oliver.brewka@9elements.com>
show more ...
|
| 43feb5cd | 24-Sep-2025 |
Oliver Brewka <oliver.brewka@9elements.com> |
Add Journal EventLog to Manager
In order to get access to the EventLog on multi-host platforms, add Journal EventLog to Manager. This implementation is based on the discussion we had on patch 76319
Add Journal EventLog to Manager
In order to get access to the EventLog on multi-host platforms, add Journal EventLog to Manager. This implementation is based on the discussion we had on patch 76319 [1].
TLDR: On multi-host, we technically would have to split the event log on a per host node basis, so that each host node has its own specific event log.
However, this is currently not supported so we had to decide, whether we put it on a specific ComputerSystem, or refactor the current implementation of the EventLog, to allow for the EventLog LogService to be part of the Managers resource. We chose the latter one, because a), it is not clear on which ComputerSystem to put the EventLog, as long as we aren't splitting the event log per host node, and b), if that particular ComputerSystem is not existing at runtime, there would be no access to the EventLog at all.
This feature can be enabled with the redfish-eventlog-location meson option. By default it is set to 'systems', which translates to the EventLog being under the Systems resource. To enable the EventLog under the Managers resource set
``` -Dredfish-eventlog-location=managers ``` This in turn, disables the EventLog under the ComputerSystem resource.
Tested: Redfish validation succeeded for both ComputerSystem and Managers tree.
``` curl command: curl -w "@curl-format.txt" -c cjar -b cjar -k -X GET 'https://'"${BMC}"':4443/redfish/v1/'"$ROUTE"'' \ -H 'X-Auth-Token: '"$BMCWEB_SESSION_TOKEN"''
GET /redfish/v1/Managers/bmc/LogServices { "@odata.id": "/redfish/v1/Managers/bmc/LogServices", "@odata.type": "#LogServiceCollection.LogServiceCollection", "Description": "Collection of LogServices for this Manager", "Members": [ { "@odata.id": "/redfish/v1/Managers/bmc/LogServices/Journal" }, { "@odata.id": "/redfish/v1/Managers/bmc/LogServices/EventLog" } ], "Members@odata.count": 2, "Name": "Open BMC Log Services Collection" }
GET /redfish/v1/Managers/bmc/LogServices/EventLog { "@odata.id": "/redfish/v1/Managers/bmc/LogServices/EventLog", "@odata.type": "#LogService.v1_2_0.LogService", "Actions": { "#LogService.ClearLog": { "target": "/redfish/v1/Managers/bmc/LogServices/EventLog/Actions/LogService.ClearLog" } }, "DateTime": "2025-09-24T15:22:36+00:00", "DateTimeLocalOffset": "+00:00", "Description": "Manager Event Log Service", "Entries": { "@odata.id": "/redfish/v1/Managers/bmc/LogServices/EventLog/Entries" }, "Id": "EventLog", "Name": "Event Log Service", "OverWritePolicy": "WrapsWhenFull" }
GET /redfish/v1/Managers/bmc/LogServices/EventLog/Entries { "@odata.id": "/redfish/v1/Managers/bmc/LogServices/EventLog/Entries", "@odata.type": "#LogEntryCollection.LogEntryCollection", "Description": "Collection of Manager Event Log Entries", "Members": [ { "@odata.id": "/redfish/v1/Managers/bmc/LogServices/EventLog/Entries/1730009576", "@odata.type": "#LogEntry.v1_9_0.LogEntry", "Created": "2024-10-27T06:12:56+00:00", "EntryType": "Event", "Id": "1730009576", "Message": "Host system DC power is off", "MessageArgs": [], "MessageId": "OpenBMC.0.1.DCPowerOff", "Name": "Manager Event Log Entry", "Severity": "OK" }, ... ], "Members@odata.count": 2820, "Members@odata.nextLink": "/redfish/v1/Managers/bmc/LogServices/EventLog/Entries?$skip=1000", "Name": "Manager Event Log Entries" }
GET /redfish/v1/Managers/bmc/LogServices/EventLog/Entries/1730009576 { "@odata.id": "/redfish/v1/Managers/bmc/LogServices/EventLog/Entries/1730009576", "@odata.type": "#LogEntry.v1_9_0.LogEntry", "Created": "2024-10-27T06:12:56+00:00", "EntryType": "Event", "Id": "1730009576", "Message": "Host system DC power is off", "MessageArgs": [], "MessageId": "OpenBMC.0.1.DCPowerOff", "Name": "Manager Event Log Entry", "Severity": "OK" } ``` ClearLog action: Log files are being successfully deleted from /var/log
[1] https://gerrit.openbmc.org/c/openbmc/bmcweb/+/76319
Change-Id: If5b4fe10151b6bfd28a1b49c41f8cfcec1b9132c Signed-off-by: Oliver Brewka <oliver.brewka@9elements.com>
show more ...
|
| d9495964 | 16-Oct-2025 |
Thang Tran <thuutran@amperecomputing.com> |
Correct the version of Message Id
Applications are logging Redfish Message ID to journal, but the version of some message ID are different with the definition of bmcweb. E.g: - psusensor is defining
Correct the version of Message Id
Applications are logging Redfish Message ID to journal, but the version of some message ID are different with the definition of bmcweb. E.g: - psusensor is defining version of OpenBMC registry is "0.1" as [1]. - The bmcweb defines the version of OpenBMC registry is "0.5" as [2].
It makes the "MessageId" property of Event log's enties has different version with definition in the /redfish/v1/Registries.
This commit corrects the version of Message ID.
[1]: https://github.com/openbmc/dbus-sensors/blob/6b7123225fc4a5180faf89190e9f64a7e248e697/src/psu/PSUEvent.cpp#L121 [2]: https://github.com/openbmc/bmcweb/blob/master/redfish-core/include/registries/openbmc.json#L1678
Tested: Verify the version of Events are the same the version of Registries that are defined in the bmcweb.
Change-Id: Ib862c8d0a62cae63082436cb4646a9ca45207872 Signed-off-by: Thang Tran <thuutran@amperecomputing.com>
show more ...
|
| efe29ab5 | 13-Nov-2025 |
Christopher Meis <christopher.meis@9elements.com> |
redfish/lib: simplify memory.hpp
This change simplify the routes and route setup for memory functions.
Change-Id: I13d66fbda48672032bb4a037743ad6f074783620 Signed-off-by: Christopher Meis <christop
redfish/lib: simplify memory.hpp
This change simplify the routes and route setup for memory functions.
Change-Id: I13d66fbda48672032bb4a037743ad6f074783620 Signed-off-by: Christopher Meis <christopher.meis@9elements.com>
show more ...
|
| f8ae8876 | 13-Oct-2025 |
Oliver Brewka <oliver.brewka@9elements.com> |
Refactor LogService collection handler
The route handler for Systems LogService collection consisted of a huge lambda. Extract the code and put it into a separate function. Also, rename the route ha
Refactor LogService collection handler
The route handler for Systems LogService collection consisted of a huge lambda. Extract the code and put it into a separate function. Also, rename the route handler, to align with the Redfish resource identifiers and reorder the placement of the functions, so that requestRoutes functions are at the bottom of the file.
Tested: Code compiles.
Change-Id: Ifb9b27a5648870e5691777e7b031ff464a657b42 Signed-off-by: Oliver Brewka <oliver.brewka@9elements.com>
show more ...
|
| 9d6459e8 | 27-Aug-2025 |
Oliver Brewka <oliver.brewka@9elements.com> |
Dynamic EventLogService handler
In order to reuse the handler for the EventLogService under Managers, extract the logic from the handler and put it into a separate function in the eventlog util. Add
Dynamic EventLogService handler
In order to reuse the handler for the EventLogService under Managers, extract the logic from the handler and put it into a separate function in the eventlog util. Add an additional argument that specifies the redfish resource, so we can handle Systems and Managers resource with the same handler.
Tested: Code compiles. Redfish validation succeeds. Additionally the curl output with and without the changes has been diffed. No differences observed.
Change-Id: I48825b55b41afeafa02283dc91cf4cb1cd4cd7c3 Signed-off-by: Oliver Brewka <oliver.brewka@9elements.com>
show more ...
|
| e8f66f0b | 08-Oct-2025 |
Ed Tanous <etanous@nvidia.com> |
Parse number types from the base registry
Rather than maintaining a list of arguments that are numbers (which is error prone), update the script to just trust that the few parameters labeled in Redf
Parse number types from the base registry
Rather than maintaining a list of arguments that are numbers (which is error prone), update the script to just trust that the few parameters labeled in Redfish as numbers should in fact show up in the API as numbers.
Functionally this changes the APIs for only a few error messages, only one of which (StringValueTooShort) is used and that usage was added recently.
Tested: SRV passes.
Change-Id: I580523ecc0263688738bcb7f7925913e40e2a113 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
| 99353a92 | 26-Sep-2025 |
Christopher Meis <christopher.meis@9elements.com> |
redfish-core: Unify fan routing
This change unifies fan collection and fan property get route setup.
Change-Id: Ib09a3b7b667ee551df74f2483babf4d0526e26dd Signed-off-by: Christopher Meis <christophe
redfish-core: Unify fan routing
This change unifies fan collection and fan property get route setup.
Change-Id: Ib09a3b7b667ee551df74f2483babf4d0526e26dd Signed-off-by: Christopher Meis <christopher.meis@9elements.com>
show more ...
|
| b0a8d97b | 21-Sep-2025 |
Joey Berkovitz <joey@berkovitz.us> |
PasswordChangeRequired: Fix error message
The PasswordChangeRequired error was incorrectly formatted. Per the spec, it should be an error response and 403 on all requests except for session creation
PasswordChangeRequired: Fix error message
The PasswordChangeRequired error was incorrectly formatted. Per the spec, it should be an error response and 403 on all requests except for session creation, which is just a `@Message.ExtendedInfo` annotation. See [1].
This is a follow-up to 1c651ee12ad55ab6626c2baf3754aecda305ba43 which accidentally only broke out the password change logic for session creation. This change adjusts the non-session-creation error response for PasswordChangeRequired to return a proper error.
Tested: - Built a romulus image - Ran `passwd --expire root` - curl to Managers and session creation
``` ╰─○ curl -kv --user "$BMC_USER:$BMC_PASS" https: //localhost:2443/redfish/v1/Managers < HTTP/2 403 { "error": { "@Message.ExtendedInfo": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The password provided for this account must be changed before access is granted. PATCH the Password property for this account located at the target URI '/redfish/v1/AccountService/Accounts/root' to complete this process.", "MessageArgs": [ "/redfish/v1/AccountService/Accounts/root" ], "MessageId": "Base.1.19.PasswordChangeRequired", "MessageSeverity": "Critical", "Resolution": "Change the password for this account using a PATCH to the Password property at the URI provided." } ], "code": "Base.1.19.PasswordChangeRequired", "message": "The password provided for this account must be changed before access is granted. PATCH the Password property for this account located at the target URI '/redfish/v1/AccountService/Accounts/root' to complete this process." } }
╰─○ curl -kv -X POST -H 'Content-Type: application/json' -d '{"UserName": "root", "Password": "..."}' https://localhost:2443/redfish/v1/SessionService/Sessions < HTTP/2 201 { "@Message.ExtendedInfo": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The password provided for this account must be changed before access is granted. PATCH the Password property for this account located at the target URI '/redfish/v1/AccountService/Accounts/root' to complete this process.", "MessageArgs": [ "/redfish/v1/AccountService/Accounts/root" ], "MessageId": "Base.1.19.PasswordChangeRequired", "MessageSeverity": "Critical", "Resolution": "Change the password for this account using a PATCH to the Password property at the URI provided." } ], "@odata.id": "/redfish/v1/SessionService/Sessions/klDQdHSMME", "@odata.type": "#Session.v1_7_0.Session", "ClientOriginIPAddress": "0.0.0.0", "Description": "Manager User Session", "Id": "klDQdHSMME", "Name": "User Session", "Roles": [ "Administrator" ], "UserName": "root" } ```
[1]: https://www.dmtf.org/sites/default/files/standards/documents/DSP0266_1.22.1.html#password-change-required-handling
Change-Id: I0ab50b4e2298d13ae00f84bc7891c2a14610e1b2 Signed-off-by: Joey Berkovitz <joey@berkovitz.us>
show more ...
|
| 2ca56194 | 16-Sep-2025 |
Ed Tanous <etanous@nvidia.com> |
Add back include cleaner
Include cleaner helps the code review process. Add it back, by ignoring some of the more recent boost headers.
Change-Id: I6eddd0e67cd9f469c93fbb344cc1ab46231e450f Signed-
Add back include cleaner
Include cleaner helps the code review process. Add it back, by ignoring some of the more recent boost headers.
Change-Id: I6eddd0e67cd9f469c93fbb344cc1ab46231e450f Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
| 83237dd6 | 11-Jan-2021 |
SunnySrivastava1984 <sunnsr25@in.ibm.com> |
Inventory properties via Assembly schema
This commit implements Redfish Assembly schema. This schema will be used to publish inventory data for FRUs which are attached to a given Chassis and does no
Inventory properties via Assembly schema
This commit implements Redfish Assembly schema. This schema will be used to publish inventory data for FRUs which are attached to a given Chassis and does not map to any specific schema definition.
The properties which are published in this commit are LocationCode, SparePartNumber, Model, SerialNumber and PartNumber.
One of the major use case to publish these properties via redfish is for anyone to identify the inventory and its location in the system, which in turn will help them in repair/replacement related to that FRU.
The validator has been executed on the change and no error has been found. As this has been tested on a development image some fields are empty in the below pasted output for which warning was thrown by validator but no errors.
Sample Output with [1]: ``` { "@odata.id": "/redfish/v1/Chassis/chassis/Assembly", "@odata.type": "#Assembly.v1_5_1.Assembly", "Assemblies": [ { "@odata.id": "/redfish/v1/Chassis/chassis/Assembly#/Assemblies/0", "@odata.type": "#Assembly.v1_5_1.AssemblyData", "Location": { "PartLocation": { "ServiceLabel": "U78DA.ND0.1234567-D0" } }, "Manufacturer": "", "MemberId": "0", "Model": "", "Name": "base_op_panel_blyth", "PartNumber": "", "SerialNumber": "", "Status": { "Health": "OK", "State": "Absent" } }, { "@odata.id": "/redfish/v1/Chassis/chassis/Assembly#/Assemblies/1", "@odata.type": "#Assembly.v1_5_1.AssemblyData", "Location": { "PartLocation": { "ServiceLabel": "U78DA.ND0.1234567-D1" } }, "Manufacturer": "", "MemberId": "1", "Model": "6B86", "Name": "lcd_op_panel_hill", "PartNumber": "PN12345", "SerialNumber": "YL6B86010000", "Status": { "Health": "OK", "State": "Enabled" } } ], "Assemblies@odata.count": 2, "Id": "Assembly", "Name": "Assembly Collection" } ```
[1] https://gerrit.openbmc.org/c/openbmc/openbmc/+/83907
Change-Id: I2d462340fe1a0b0eb387697f0ff70fcafde3f8d9 Signed-off-by: Sunny Srivastava <sunnsr25@in.ibm.com> Signed-off-by: Ninad Palsule <ninad@linux.ibm.com> Signed-off-by: Myung Bae <myungbae@us.ibm.com>
show more ...
|
| 3b37e835 | 16-Sep-2025 |
Christopher Meis <christopher.meis@9elements.com> |
lib/processor.hpp: Clean up
Clean up route generation and remove large lambda functions. Also separate processor from processor operating configuration functions into two files.
Change-Id: I2b72f86
lib/processor.hpp: Clean up
Clean up route generation and remove large lambda functions. Also separate processor from processor operating configuration functions into two files.
Change-Id: I2b72f8663105b6a89612e6e7bc1e7e0812b81eae Signed-off-by: Christopher Meis <christopher.meis@9elements.com>
show more ...
|
| 664c9560 | 26-Aug-2025 |
Oliver Brewka <oliver.brewka@9elements.com> |
Break out DBus EventLog
As part of a EventLog refactor, break out all code used for Systems DBus EventLog, in order to make the code base more maintainable in the long run.
Tested: Only code extrac
Break out DBus EventLog
As part of a EventLog refactor, break out all code used for Systems DBus EventLog, in order to make the code base more maintainable in the long run.
Tested: Only code extraction. Code compiles.
Change-Id: I94de7bf3171fd3963eebec6608438f8d07cee44c Signed-off-by: Oliver Brewka <oliver.brewka@9elements.com>
show more ...
|
| 75dac00e | 26-Aug-2025 |
Oliver Brewka <oliver.brewka@9elements.com> |
Break out Journal EventLog
As part of a EventLog refactor, break out all code used for Systems Journal EventLog, in order to make the code base more maintainable in the long run.
Tested: Only code
Break out Journal EventLog
As part of a EventLog refactor, break out all code used for Systems Journal EventLog, in order to make the code base more maintainable in the long run.
Tested: Only code extraction. Code compiles.
Change-Id: I855c8c680d3de68944b0ae03ff7f181e6790c456 Signed-off-by: Oliver Brewka <oliver.brewka@9elements.com>
show more ...
|
| 37937d51 | 21-Feb-2023 |
George Liu <liuxiwei@inspur.com> |
Implement Fabric PortCollection and Port schemas
This implements 2 schemas for FabricAdapters [1][2].
The implementation uses `GetAssociatedSubTreePathsById` & `GetAssociatedSubTreeById`. - https:/
Implement Fabric PortCollection and Port schemas
This implements 2 schemas for FabricAdapters [1][2].
The implementation uses `GetAssociatedSubTreePathsById` & `GetAssociatedSubTreeById`. - https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/69999
The association is defined via - https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/62881.
The backend port examples are also committed via - https://gerrit.openbmc.org/c/openbmc/openpower-vpd-parser/+/66540 - https://gerrit.openbmc.org/c/openbmc/openpower-vpd-parser/+/70888 - https://gerrit.openbmc.org/c/openbmc/openbmc/+/66541
The current submission only implements the basic properties of Port (e.g. Id, Name etc) as a foundation of the future additional properties. - Location - LocationIndicatorActive - Status
One example of Ports is this cable card for the i/o expansion drawers and modeling the 2 ports on the cable card [3]. These ports have an identify led, a location code, and a status.
Tested: - Redfish Validator passes - perform GET methods like these:
``` curl -k -X GET https://${bmc}/redfish/v1/Systems/system/FabricAdapters/disk_backplane0 { "@odata.id": "/redfish/v1/Systems/system/FabricAdapters/disk_backplane0", "@odata.type": "#FabricAdapter.v1_4_0.FabricAdapter", "Id": "disk_backplane0", ... "Ports": { "@odata.id": "/redfish/v1/Systems/system/FabricAdapters/disk_backplane0/Ports" }, ... } ```
``` curl -k -X GET https://${bmc}/redfish/v1/Systems/system/FabricAdapters/disk_backplane0/Ports { "@odata.id": "/redfish/v1/Systems/system/FabricAdapters/disk_backplane0/Ports", "@odata.type": "#PortCollection.PortCollection", "Members": [ { "@odata.id": "/redfish/v1/Systems/system/FabricAdapters/disk_backplane0/Ports/dp0_connector4" }, { "@odata.id": "/redfish/v1/Systems/system/FabricAdapters/disk_backplane0/Ports/dp0_connector5" } ], "Members@odata.count": 2, "Name": "Port Collection" } ```
``` curl -k -X GET https://${bmc}:18080/redfish/v1/Systems/system/FabricAdapters/disk_backplane0/Ports/dp0_connector4 { "@odata.id": "/redfish/v1/Systems/system/FabricAdapters/disk_backplane0/Ports/dp0_connector4", "@odata.type": "#Port.v1_7_0.Port", "Id": "dp0_connector4", "Name": "dp0_connector4" }% ```
Also try the invalid port like
``` curl -k -X GET https://${bmc}:18080/redfish/v1/Systems/system/FabricAdapters/io_module1/Ports/INVALID { "error": { "@Message.ExtendedInfo": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The requested resource of type Port named 'INVALID' was not found.", "MessageArgs": [ "Port", "INVALID" ], "MessageId": "Base.1.16.0.ResourceNotFound", "MessageSeverity": "Critical", "Resolution": "Provide a valid resource identifier and resubmit the request." } ], "code": "Base.1.16.0.ResourceNotFound", "message": "The requested resource of type Port named 'INVALID' was not found." } }% ```
[1] https://redfish.dmtf.org/schemas/v1/PortCollection_v1.xml [2] https://redfish.dmtf.org/schemas/v1/Port_v1.xml [3] https://www.ibm.com/docs/en/power10?topic=details-pcie4-cable-adapter-fc-ej24-ccin-6b92
Signed-off-by: George Liu <liuxiwei@inspur.com> Change-Id: I8c64c16764e85c0716e264263708b18f897a2c0c Signed-off-by: Myung Bae <myungbae@us.ibm.com>
show more ...
|
| f86cdd7d | 12-Aug-2025 |
Ed Tanous <etanous@nvidia.com> |
Move common structures
It's ideal if the various BMCWEB_ROUTE lib calls do not call from one another. This reduces the amount of code that's compiled each time separately.
Tested: Code compiles.
Move common structures
It's ideal if the various BMCWEB_ROUTE lib calls do not call from one another. This reduces the amount of code that's compiled each time separately.
Tested: Code compiles.
Change-Id: I4822ce66c122f261cc6aa34bbd99371b7eff48c8 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|