#
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 ...
|
#
64acd268
|
| 21-Aug-2025 |
Myung Bae <myungbae@us.ibm.com> |
Refactor Manager Reset Actions
This refactors manager reset action handling codes and also merges the requestRoute function into one. - handleManagerResetAction - handleManagerResetToDefaultsAction
Refactor Manager Reset Actions
This refactors manager reset action handling codes and also merges the requestRoute function into one. - handleManagerResetAction - handleManagerResetToDefaultsAction - handleManagerResetActionInfo
This also rearranges requestRouteManager setup functions into one. - requestRoutesManager - requestRoutesManagerCollection
Tested: - Perform Manager Reset actions - Redfish Service Validator passes
Change-Id: Ia76719d98aac8b871f0f275b0bc99999562fe796 Signed-off-by: Myung Bae <myungbae@us.ibm.com>
show more ...
|
#
c1a75ebc
|
| 03-Jan-2025 |
rohitpai <rohitpai77@gmail.com> |
OEM Route Handling Infrastructure
Goal of the MR is to provide infrastructure support in bmcweb to manage the OEM fragment handling separately. OEM schema are vendor defined and per DMTF resource we
OEM Route Handling Infrastructure
Goal of the MR is to provide infrastructure support in bmcweb to manage the OEM fragment handling separately. OEM schema are vendor defined and per DMTF resource we could have multiple vendor defined OEM schema to be enabled.
The feature allows registration of route handler per schema per OEM namespace. Example ``` REDFISH_SUB_ROUTE<"/redfish/v1/Managers/<str>/#/Oem/OpenBmc">(service, HttpVerb::Get)(oemOpenBmcCallback); REDFISH_SUB_ROUTE<"/redfish/v1/Managers/<str>/#/Oem/Nvidia">(service, HttpVerb::Get)(oemNidiaCallback); ```
We can have separate vendor defined route handlers per resource. Each of these route handlers can populate their own vendor specific OEM data. The OEM code can be better organized and enabled/disabled as per the platform needs. The current MR has the code changes related to handling GET requests alone. The feature only supports requests where the response payload is JSON.
Tests - All UT cases passes - New UT added for RF OEM router passes - Service Validator passes on qemu - GET Response on Manager/bmc resource contains the OEM fragment
``` curl -c cjar -b cjar -k -X GET https://127.0.0.1:2443/redfish/v1/Managers/bmc { "@odata.id": "/redfish/v1/Managers/bmc", "@odata.type": "#Manager.v1_14_0.Manager",
"Oem": { "OpenBmc": { "@odata.id": "/redfish/v1/Managers/bmc#/Oem/OpenBmc", "@odata.type": "#OpenBMCManager.v1_0_0.Manager", "Certificates": { "@odata.id": "/redfish/v1/Managers/bmc/Truststore/Certificates" } } },
"UUID": "40575e98-90d7-4c10-9eb5-8d8a7156c9b9" } ```
Change-Id: Ic82aa5fe760eda31e2792fbdfb6884ac3ea613dc Signed-off-by: Rohit PAI <rohitpai77@gmail.com>
show more ...
|
#
40e9b92e
|
| 10-Sep-2024 |
Ed Tanous <etanous@nvidia.com> |
Use SPDX identifiers
SPDX identifiers are simpler, and reduce the amount of cruft we have in code files. They are recommended by linux foundation, and therefore we should do as they allow.
This pa
Use SPDX identifiers
SPDX identifiers are simpler, and reduce the amount of cruft we have in code files. They are recommended by linux foundation, and therefore we should do as they allow.
This patchset does not intend to modify any intent on any existing copyrights or licenses, only to standardize their inclusion.
[1] https://www.linuxfoundation.org/blog/blog/copyright-notices-in-open-source-software-projects
Change-Id: I935c7c0156caa78fc368c929cebd0f068031e830 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
#
e21126ec
|
| 03-Sep-2024 |
Ed Tanous <etanous@nvidia.com> |
Break out hostlogger
Similar to what we've done elsewhere, break out hostlogger into its own file.
Tested: Code compiles.
Change-Id: Ib9a48577878f57eb7ed4e3cf6b84a58a3ec203f6 Signed-off-by: Ed Tan
Break out hostlogger
Similar to what we've done elsewhere, break out hostlogger into its own file.
Tested: Code compiles.
Change-Id: Ib9a48577878f57eb7ed4e3cf6b84a58a3ec203f6 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
#
8d2f868c
|
| 03-Sep-2024 |
Ed Tanous <etanous@nvidia.com> |
Break out post codes
Similar to other patches, break out the post codes log services into their own file. log_services.hpp is far too large.
Change-Id: I3cb644d52a9d3b5f9a15a2f90c1b69c87491e5c8 Si
Break out post codes
Similar to other patches, break out the post codes log services into their own file. log_services.hpp is far too large.
Change-Id: I3cb644d52a9d3b5f9a15a2f90c1b69c87491e5c8 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
#
68896206
|
| 21-Aug-2024 |
Gunnar Mills <gmills@us.ibm.com> |
Add a Hypervisor Computer System Option
Today to determine if the hypervisor computer system resource should be added to the System Collection a call to the Settings Manager is made.
Based on discu
Add a Hypervisor Computer System Option
Today to determine if the hypervisor computer system resource should be added to the System Collection a call to the Settings Manager is made.
Based on discussion in https://gerrit.openbmc.org/c/openbmc/bmcweb/+/73203 and to help the multihost stuff move forward, lets move this hypervisor under a meson option which any company that needs can enable. I think IBM is the only one who uses this so the risk of breaking someone should be small.
One day hope to converge at some point, this probably doesn't happen until after the multihost stuff goes in.
This is also better for implementations that don't have this backend because now routes like /redfish/v1/Systems/hypervisor/EthernetInterfaces/ aren't put out. I.e. a call to /redfish/v1/Systems/hypervisor/EthernetInterfaces/ is now going to return 404 instead of 500 on systems without this backend support.
Tested: Enabled this and see the hypervisor system. Without this enabled do not see the hypervisor system. No new validator errors either way.
Change-Id: Ie05e6644dd6f640cf8225f96becb99b9c2d0de20 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
show more ...
|
#
a782e265
|
| 12-Aug-2024 |
Alexander Hansen <alexander.hansen@9elements.com> |
event logs: move route requests
The alternative routes declared depending on BMCWEB_REDFISH_DBUS_LOG can be closer together. This makes the route declarations more readable.
Tested: no, simple code
event logs: move route requests
The alternative routes declared depending on BMCWEB_REDFISH_DBUS_LOG can be closer together. This makes the route declarations more readable.
Tested: no, simple code move
Change-Id: Ia296a3391cc8476b4fa4a1198a7005aab000b4fa Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
#
d5c0172e
|
| 16-Jun-2024 |
Ed Tanous <etanous@nvidia.com> |
Add back odata support
/redfish/v1/odata/index.json was inadvertently moved to be not installed in a529a6aa44e04ae5845d1324f3e8c887ebd47f7b
This file is basically unused, and even this author doesn
Add back odata support
/redfish/v1/odata/index.json was inadvertently moved to be not installed in a529a6aa44e04ae5845d1324f3e8c887ebd47f7b
This file is basically unused, and even this author doesn't understand what it's used for, but it is technically required in the spec, so add it back using a runtime derived handler.
Tested: Get /redfish/v1/odata returns the appropriate struct.
Change-Id: I548abbdd9f0b1eb28299165202626feede41e363 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
#
84177a2f
|
| 17-Jul-2024 |
Ed Tanous <etanous@nvidia.com> |
Break journal logging into methods
Like we've done other places, make log services journal follow the naming convention, and break down lambdas into actual methods.
This is a refactor not intended
Break journal logging into methods
Like we've done other places, make log services journal follow the naming convention, and break down lambdas into actual methods.
This is a refactor not intended to make any functional changes.
Tested: Redfish service validator passes. Journal works as before.
Change-Id: Ibbc7a13fba9c63606f7fd9c741af3b296633b664 Signed-off-by: Ed Tanous <etanous@nvidia.com>
show more ...
|
#
b0983db2
|
| 17-Jul-2024 |
Ed Tanous <etanous@nvidia.com> |
Break out Journal log into its own file
log_services.hpp probably shouldn't have been allowed to get as large as it has. This commit starts by breaking out functions from log_services.hpp, and move
Break out Journal log into its own file
log_services.hpp probably shouldn't have been allowed to get as large as it has. This commit starts by breaking out functions from log_services.hpp, and moves them to manager_logservices_journal.hpp. Code is moved as-is with no functional changes.
Tested: Journal GET works as before. Redfish service validator passes.
Change-Id: I93c372ae3e39967e1b0eaf0cf496f84ac4114b5c Signed-off-by: Ed Tanous <ed@tanous.net>
show more ...
|
#
090ab8e1
|
| 18-May-2024 |
Ed Tanous <ed@tanous.net> |
Generate metadata at runtime
In the initial implementation of metadata indexing the bmc knew at compile time what schemas it could potentially publish. bmcweb took the approach of adding all schema
Generate metadata at runtime
In the initial implementation of metadata indexing the bmc knew at compile time what schemas it could potentially publish. bmcweb took the approach of adding all schemas of all versions to the $metadata resource. Since that was made, two major changes have happened. First, Redfish has added significantly more versions of each schema, as well as significantly more schemas to the point where the metadata index is now 213KB. While this file compresses fairly well, the size is obvious from the large amount of time that redfish service validator takes to parse the schemas, compared to actually acquiring BMC redfish resources. Second, aggregation was added, where an aggregated Redfish service might implement any number of schemas, including OEM ones.
In an effort to fix this, this patch takes the compile-time algorithm in update_schemas.py, and moves it into bmcweb itself, parsing the files on disk as needed on demand. This has some immediate benefits; First, is that now schemas can be potentially installed from anywhere, not only from within the bmcweb build, and they will be resolved at runtime.
Second, patches that want to add support for a given schema need to only symlink the schema into the correct folder, without needing to rerun update_schemas.py. This saves time in review.
Finally, this opens to door to reducing the schema versions present in the metadata to the unique set of only what this bmcweb instance, and its aggregated BMCs expose.
Tested: Redfish service validator passes. Need A/B checking to verify the file is byte for byte the same. GET /redfish/v1/$metadata returns what looks like sane results, with a correct content-type. Unit tests require the use of TemporaryFileHandle, so that class is moved into a more general folder, outside of test/http.
Change-Id: I326159099c6b6c4056023b2e173c5f074ed88ce1 Signed-off-by: Ed Tanous <ed@tanous.net>
show more ...
|
#
36a59eaf
|
| 01-May-2024 |
Ed Tanous <ed@tanous.net> |
Fix regression in LogService
25b54db introduced an inadvertent inversion in options. Admittedly, this option (redfish-dbus-entries) chose to override URLs instead of creating new ones, which makes
Fix regression in LogService
25b54db introduced an inadvertent inversion in options. Admittedly, this option (redfish-dbus-entries) chose to override URLs instead of creating new ones, which makes it incompatible. Normally we'd require unique URIs for each entry to make this error not possible, and I believe that this is the only instance of us registering two handlers for one url/verb.
Tested: Romulus now boots and functions in qemu. GET /redfish/v1 returns results.
Change-Id: I6125a5a0242b6cfc54ff19866665227c97f45d0a Signed-off-by: Ed Tanous <ed@tanous.net>
show more ...
|
#
25b54dba
|
| 17-Apr-2024 |
Ed Tanous <ed@tanous.net> |
Bring consistency to config options
The configuration options that exist in bmcweb are an amalgimation of CROW options, CMAKE options using #define, pre-bmcweb ifdef mechanisms and meson options usi
Bring consistency to config options
The configuration options that exist in bmcweb are an amalgimation of CROW options, CMAKE options using #define, pre-bmcweb ifdef mechanisms and meson options using a config file. This history has led to a lot of different ways to configure code in the codebase itself, which has led to problems, and issues in consistency.
ifdef options do no compile time checking of code not within the branch. This is good when you have optional dependencies, but not great when you're trying to ensure both options compile.
This commit moves all internal configuration options to: 1. A namespace called bmcweb 2. A naming scheme matching the meson option. hyphens are replaced with underscores, and the option is uppercased. This consistent transform allows matching up option keys with their code counterparts, without naming changes. 3. All options are bool true = enabled, and any options with _ENABLED or _DISABLED postfixes have those postfixes removed. (note, there are still some options with disable in the name, those are left as-is) 4. All options are now constexpr booleans, without an explicit compare.
To accomplish this, unfortunately an option list in config/meson.build is required, given that meson doesn't provide a way to dump all options, as is a manual entry in bmcweb_config.h.in, in addition to the meson_options. This obsoletes the map in the main meson.build, which helps some of the complexity.
Now that we've done this, we have some rules that will be documented. 1. Runtime behavior changes should be added as a constexpr bool to bmcweb_config.h 2. Options that require optionally pulling in a dependency shall use an ifdef, defined in the primary meson.build. (note, there are no options that currently meet this class, but it's included for completeness.)
Note, that this consolidation means that at configure time, all options are printed. This is a good thing and allows direct comparison of configs in log files.
Tested: Code compiles Server boots, and shows options configured in the default build. (HTTPS, log level, etc)
Change-Id: I94e79a56bcdc01755036e4e7278c7e69e25809ce Signed-off-by: Ed Tanous <ed@tanous.net>
show more ...
|
#
5b90429a
|
| 16-Apr-2024 |
Ed Tanous <ed@tanous.net> |
Add missing headers
Most of these were found by breaking every redfish class handler into its own compile unit:
When that's done, these missing headers become compile errors. We should just fix the
Add missing headers
Most of these were found by breaking every redfish class handler into its own compile unit:
When that's done, these missing headers become compile errors. We should just fix them.
In addition, this allows us to enable automatic header checking in clang-tidy using misc-header-cleaner. Because the compiler can now "see" all the defines, it no longer tries to remove headers that it thinks are unused.
[1] https://github.com/openbmc/bmcweb/commit/4fdee9e39e9f03122ee16a6fb251a380681f56ac
Tested: Code compiles.
Change-Id: Ifa27ac4a512362b7ded7cc3068648dc4aea6ad7b Signed-off-by: Ed Tanous <ed@tanous.net>
show more ...
|
#
f5139334
|
| 03-Apr-2024 |
Ed Tanous <ed@tanous.net> |
Refactor UpdateService
Similar to other refactorings we've been doing, make UpdateService call into methods instead of inline lambdas.
Tested: Redfish service validator passes. Structural changes
Refactor UpdateService
Similar to other refactorings we've been doing, make UpdateService call into methods instead of inline lambdas.
Tested: Redfish service validator passes. Structural changes only.
Change-Id: I96b6db5e14fa0f7d357fb0faf63d0457b7963581 Signed-off-by: Ed Tanous <ed@tanous.net>
show more ...
|
#
3cd7072b
|
| 06-Apr-2024 |
Ed Tanous <ed@tanous.net> |
Move run and redfish to compile units
Meson supports unity builds[1] natively. There's no reason to continue with the pseudo unity build we've been using by putting implementations in header files.
Move run and redfish to compile units
Meson supports unity builds[1] natively. There's no reason to continue with the pseudo unity build we've been using by putting implementations in header files.
This commit is the first in a long series of starting to break this up into smaller compile units, in the hopes of dropping incremental compile times for developers, and reduce the total per-core memory usage that gcc requires.
This commit breaks out the run() function from main() and the constructor of RedfishService from redfish.hpp into their own compile units. According to tracing, even after broken out, these are still by far the two longest to compile units in the build.
Tested: Code compiles. Debug build on a 24 core build server results in a decrease in compile time for compiling just bmcweb from 1m38s to 1m22s.
[1] https://mesonbuild.com/Unity-builds.html
Change-Id: Ibf352e8aba61d64c9a41a7a76e94ab3b5a0dde4b Signed-off-by: Ed Tanous <ed@tanous.net>
show more ...
|