<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/OpenBmc/bmcweb.git/redfish-core/src, branch master</title>
<subtitle>A do everything Redfish, KVM, GUI, and DBus webserver for OpenBMC (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/atom?h=master</id>
<link rel='self' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/'/>
<updated>2026-09-03T12:29:02+00:00</updated>
<entry>
<title>Simplify dump routes registry</title>
<updated>2026-09-03T12:29:02+00:00</updated>
<author>
<name>Oliver Brewka</name>
<email>oliver.brewka@9elements.com</email>
</author>
<published>2026-08-18T11:20:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=03f1a3b72a41769920b7492976b21103eb588f97'/>
<id>urn:sha1:03f1a3b72a41769920b7492976b21103eb588f97</id>
<content type='text'>
Instead of registering each route separately, register all routes in a
single function call for systems dump, manager dump and manager
faultlog.

Tested: Code compiles. Unit tests pass. Validator passed.

Change-Id: I335ef22873137743eade4d3c0119ad38c6a68a83
Signed-off-by: Oliver Brewka &lt;oliver.brewka@9elements.com&gt;
</content>
</entry>
<entry>
<title>Break out dump / faultlog log services</title>
<updated>2026-09-03T12:25:00+00:00</updated>
<author>
<name>Oliver Brewka</name>
<email>oliver.brewka@9elements.com</email>
</author>
<published>2026-08-18T11:02:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=ae6cec26a4f80a5be05674843f50554e16fc5602'/>
<id>urn:sha1:ae6cec26a4f80a5be05674843f50554e16fc5602</id>
<content type='text'>
Similar to how other log services got broken out into own header files,
do the same for dump / faultlog.

A new dump utility header has been created, request handler and route
register function went into manager / systems log service header files
respectively.

Code logic stays untouched in this patch.

Tested: Code compiles. Unit test runs through.

Validator was run on romulus in qemu with phosphor-debug-collector ibm
extension enabled to get access to /xyz/openbmc_project/dump/system.

Via the 'CreateDump' method empty dump entries were manually created
for:
/xyz/openbmc_project/dump/system
/xyz/openbmc_project/dump/bmc
/xyz/openbmc_project/dump/faultlog

```
busctl call xyz.openbmc_project.Dump.Manager \
    /xyz/openbmc_project/dump/bmc \
    xyz.openbmc_project.Dump.Create \
    CreateDump a{sv} 0

&gt; o "/xyz/openbmc_project/dump/bmc/entry/1"

busctl tree xyz.openbmc_project.Dump.Manager

`- /xyz
  `- /xyz/openbmc_project
    `- /xyz/openbmc_project/dump
      |- /xyz/openbmc_project/dump/bmc
      | `- /xyz/openbmc_project/dump/bmc/entry
      |   |- /xyz/openbmc_project/dump/bmc/entry/1
      |   |- /xyz/openbmc_project/dump/bmc/entry/2
      |   |- /xyz/openbmc_project/dump/bmc/entry/3
      |   |- /xyz/openbmc_project/dump/bmc/entry/4
      |   |- /xyz/openbmc_project/dump/bmc/entry/5
      |   `- /xyz/openbmc_project/dump/bmc/entry/6
      |- /xyz/openbmc_project/dump/faultlog
      | `- /xyz/openbmc_project/dump/faultlog/entry
      |   `- /xyz/openbmc_project/dump/faultlog/entry/1
      |- /xyz/openbmc_project/dump/resource
      `- /xyz/openbmc_project/dump/system
        `- /xyz/openbmc_project/dump/system/entry
          `- /xyz/openbmc_project/dump/system/entry/1
```

Overwrite OperationStatus of /xyz/openbmc_project/dump/system/entry/1
for the entry to be added to the collection:

```
busctl set-property xyz.openbmc_project.Dump.Manager \
    /xyz/openbmc_project/dump/system/entry/1 \
    xyz.openbmc_project.Common.Progress Status \
    s xyz.openbmc_project.Common.Progress.OperationStatus.Completed \
```

Systems/Dump

Validating /redfish/v1/Systems/system/LogServices/Dump...
  - Pass: 14, Warn: 0, Fail: 0, Skip: 9
Validating /redfish/v1/Systems/system/LogServices/Dump/Entries...
  - Pass: 17, Warn: 0, Fail: 0, Skip: 30
Validating /redfish/v1/Systems/system/LogServices/Dump/Entries/1...
  - Pass: 10, Warn: 0, Fail: 0, Skip: 26

+--------------+--------------+--------------+--------------+
|     PASS     |     WARN     |     FAIL     |  NOT TESTED  |
+--------------+--------------+--------------+--------------+
|      41      |      0       |      0       |      65      |
+--------------+--------------+--------------+--------------+

Managers/Dump
Validating /redfish/v1/Managers/bmc/LogServices/Dump...
  - Pass: 14, Warn: 0, Fail: 0, Skip: 9
Validating /redfish/v1/Managers/bmc/LogServices/Dump/Entries...
  - Pass: 70, Warn: 0, Fail: 0, Skip: 162
Validating /redfish/v1/Managers/bmc/LogServices/Dump/Entries/1...
  - Pass: 11, Warn: 0, Fail: 0, Skip: 25
Validating /redfish/v1/Managers/bmc/LogServices/Dump/Entries/2...
  - Pass: 11, Warn: 0, Fail: 0, Skip: 25
Validating /redfish/v1/Managers/bmc/LogServices/Dump/Entries/3...
  - Pass: 9, Warn: 0, Fail: 0, Skip: 27
Validating /redfish/v1/Managers/bmc/LogServices/Dump/Entries/4...
  - Pass: 9, Warn: 0, Fail: 0, Skip: 27
Validating /redfish/v1/Managers/bmc/LogServices/Dump/Entries/5...
  - Pass: 9, Warn: 0, Fail: 0, Skip: 27
Validating /redfish/v1/Managers/bmc/LogServices/Dump/Entries/6...
  - Pass: 9, Warn: 0, Fail: 0, Skip: 27

+--------------+--------------+--------------+--------------+
|     PASS     |     WARN     |     FAIL     |  NOT TESTED  |
+--------------+--------------+--------------+--------------+
|     142      |      0       |      0       |     329      |
+--------------+--------------+--------------+--------------+

Managers/FaultLog

Validating /redfish/v1/Managers/bmc/LogServices/FaultLog...
  - Pass: 12, Warn: 0, Fail: 0, Skip: 9
Validating /redfish/v1/Managers/bmc/LogServices/FaultLog/Entries...
  - Pass: 13, Warn: 0, Fail: 0, Skip: 34
Validating /redfish/v1/Managers/bmc/LogServices/FaultLog/Entries/1...
  - Pass: 6, Warn: 0, Fail: 0, Skip: 30

+--------------+--------------+--------------+--------------+
|     PASS     |     WARN     |     FAIL     |  NOT TESTED  |
+--------------+--------------+--------------+--------------+
|      31      |      0       |      0       |      73      |
+--------------+--------------+--------------+--------------+

Change-Id: I6379f877149c545b3b3bfcda8510c6ee1085dcf9
Signed-off-by: Oliver Brewka &lt;oliver.brewka@9elements.com&gt;
</content>
</entry>
<entry>
<title>Implement SubProcessors for processor collection</title>
<updated>2026-08-01T17:45:42+00:00</updated>
<author>
<name>George Liu</name>
<email>liuxiwei@inspur.com</email>
</author>
<published>2023-07-20T01:52:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=625222aca8b622a42c8aa1039aa8ec77ee540f81'/>
<id>urn:sha1:625222aca8b622a42c8aa1039aa8ec77ee540f81</id>
<content type='text'>
The SubProcessors is a collection under the processor collection
schema. The association objects, (containing, contained_by), are
used to link the processor.

The association between processor and core have been documented in
phosphor-dbus-interfaces [1]

[1] https://github.com/openbmc/phosphor-dbus-interfaces/commit/8c79b1dc0270d01c0b713a345c8ec39533c542e4

Tested:

- GET cpu and cpu subprocessors
```
curl -k -X GET https://${bmc}/redfish/v1/Systems/system/Processors/cpu0
{
  "@odata.id": "/redfish/v1/Systems/system/Processors/cpu0",
  "@odata.type": "#Processor.v1_18_0.Processor",
  "Id": "cpu0",
 ...
  "SubProcessors": {
    "@odata.id": "/redfish/v1/Systems/system/Processors/cpu0/SubProcessors"
  },
  ...
}
```

```
curl -k -X GET https://${bmc}/redfish/v1/Systems/system/Processors/cpu0/SubProcessors
{
  "@odata.id": "/redfish/v1/Systems/system/Processors/cpu0/SubProcessors",
  "@odata.type": "#ProcessorCollection.ProcessorCollection",
  "Members": [
    {
      "@odata.id": "/redfish/v1/Systems/system/Processors/cpu0/SubProcessors/core0"
    },
    {
      "@odata.id": "/redfish/v1/Systems/system/Processors/cpu0/SubProcessors/core1"
    },
    ...
  ],
  "Members@odata.count": 4,
  "Name": "SubProcessor Collection"
}
```

- Verified that below return a link header
- GET /redfish/v1/Systems/system/Processors/cpu0/SubProcessors
- HEAD /redfish/v1/Systems/system/Processors/cpu0/SubProcessors
- Redfish Validator Passed

Change-Id: If155b97b0c782d82541c00ecf5ee70cb0180f71f
Signed-off-by: George Liu &lt;liuxiwei@ieisystem.com&gt;
Signed-off-by: Nikhil Namjoshi &lt;nikhilnamjoshi@google.com&gt;
Signed-off-by: Myung Bae &lt;myungbae@us.ibm.com&gt;
</content>
</entry>
<entry>
<title>Update GenerateSecretKeyRequired response_code</title>
<updated>2026-07-17T04:38:58+00:00</updated>
<author>
<name>Jishnu CM</name>
<email>jishnunambiarcm@duck.com</email>
</author>
<published>2026-02-19T05:37:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=f9563f663e678f3b7b408dc11d75cc8b7c6af779'/>
<id>urn:sha1:f9563f663e678f3b7b408dc11d75cc8b7c6af779</id>
<content type='text'>
Currently, GenerateSecretKeyRequired is treated as 403 Forbidden, which
would incorrectly imply the session was not created, when it should be
treated as an informational message accompanying a successful session
creation (with 201 response code), exactly like PasswordChangeRequired.

According to the Redfish spec [1], page 202, 203 (Section 13.5.5):
* "Shall allow a session login without the Token property and include
  the @Message.ExtendedInfo in the response containing the
  GenerateSecretKeyRequired message. This indicates to the client
  that their session is restricted to performing only the
  GenerateSecretKey action on their ManagerAccount resource before
  access is granted."
* "Shall allow a POST operation on the VerifyTimeBasedOneTimePassword"
  action on the ManagerAccount resource associated with the account."
* "Shall allow a DELETE operation on Session resources representing
  open sessions associated with the account."
* "May allow GET operations on unauthenticated resources, such as
  the ServiceRoot resource."
* "For all other operations, the service shall respond with the HTTP
  403 Forbidden status code and an error response with the
  GenerateSecretKeyRequired message from the Base Message Registry."

Reference:
[1] https://www.dmtf.org/sites/default/files/standards/documents/DSP0266_1.24.0.pdf#page=202&amp;zoom=100,0,789

Tested By:
* Enabled Multi-Factor Authentication (system-wide option)
* When user tries to login with username and password, session is
  created (201 is returned), with GenerateSecretKeyRequired message
  in "@Message.ExtendedInfo"
* Any operations on restricted resources returned
  GenerateSecretKeyRequired with 403 Forbidden error code.

Change-Id: Iec6c925f04584b2cdd93aec743b04d6a8dbde4bc
Signed-off-by: Jishnu CM &lt;jishnunambiarcm@duck.com&gt;
</content>
</entry>
<entry>
<title>Change a few message responses as errors</title>
<updated>2026-06-25T18:51:59+00:00</updated>
<author>
<name>Myung Bae</name>
<email>myungbae@us.ibm.com</email>
</author>
<published>2026-04-29T12:40:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=8b0993927ede52f4a32228d955a8405805acedac'/>
<id>urn:sha1:8b0993927ede52f4a32228d955a8405805acedac</id>
<content type='text'>
Some of messages are not currently reported as errors, although they
are the results as Redfish request errors. Those include

- PropertyDuplicate
- ResourceAlreadyExists
- CreateFailedMissingReqProperties
- PropertyValueFormatError
- PropertyValueNotInList
- PropertyValueTypeError
- PropertyValueError
- PropertyNotWritable
- PropertyValueModified
- PropertyMissing

For example, PropertyValueFormatError is currently not treated as an
error. It shows like

```

curl -k -X PATCH "${bmc}/redfish/v1/AccountService/Accounts/admin" \
  -H "Content-Type: application/json" \
  -d '{ "Password": "" }'

  "Password@Message.ExtendedInfo": [
    {
      "@odata.type": "#Message.v1_1_1.Message",
      "Message": "The value 'null' for the property Password is not a format that the property can accept.",
      "MessageArgs": [
        "null",
        "Password"
      ],
      "MessageId": "Base.1.19.PropertyValueFormatError",
      "MessageSeverity": "Warning",
      "Resolution": "Correct the value for the property in the request body and resubmit the request if the operation failed."
    }
  ]
```

After making it as an error, it will be like
```
{
  "error": {
    "@Message.ExtendedInfo": [
      {
        "@odata.type": "#Message.v1_1_1.Message",
        "Message": "The value 'null' for the property Password is not a format that the property can accept.",
        "MessageArgs": [
          "null",
          "Password"
        ],
        "MessageId": "Base.1.19.PropertyValueFormatError",
        "MessageSeverity": "Warning",
        "Resolution": "Correct the value for the property in the request body and resubmit the request if the operation failed."
      }
    ],
    "code": "Base.1.19.PropertyValueFormatError",
    "message": "The value 'null' for the property Password is not a format that the property can accept."
  }
}
```

Tested:
- Check those response messages

Change-Id: I746c55e42e8f0cde205a3800e3da17cd78cf7e34
Signed-off-by: Myung Bae &lt;myungbae@us.ibm.com&gt;
</content>
</entry>
<entry>
<title>Fix event log timestamp parse error</title>
<updated>2026-06-25T15:16:18+00:00</updated>
<author>
<name>Haiyue Wang</name>
<email>haiyuewa@163.com</email>
</author>
<published>2026-06-23T05:34:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=ab4232093264b4811695849851bc27137841f03d'/>
<id>urn:sha1:ab4232093264b4811695849851bc27137841f03d</id>
<content type='text'>
The comment from 'getEventLogParams()' says:
    The redfish log format is "&lt;Timestamp&gt; &lt;MessageId&gt;,&lt;MessageArgs&gt;"

And in the OpenBMC main tree, the 'rsyslog.conf' from vendor defines:
    # Template for Redfish messages
    # "&lt;timestamp&gt; &lt;MessageId&gt;,&lt;MessageArgs&gt;"
    template(name="RedfishTemplate" type="list") {
        property(name="timereported" dateFormat="rfc3339")
        constant(value=" ")
        property(name="$!REDFISH_MESSAGE_ID")
        constant(value=",")
        property(name="$!REDFISH_MESSAGE_ARGS")
        constant(value="\n")
    }

    # If the journal entry has a Redfish MessageId, save as a Redfish
    # event
    if ($!REDFISH_MESSAGE_ID != "") then {
        action(type="omfile"
               file="/var/log/redfish"
               template="RedfishTemplate")
    }

The commit aa2dfd26a514 ("Remove static variables") removed extraction
of timestamp data from the whole event log entry, 'dateStringToEpoch()'
will reject this kind of timestamp with trailing text.

Fixes: aa2dfd26a514 ("Remove static variables")

Change-Id: Id59af476e56a913a02a9f56a8c5f38c4ada7ccbf
Signed-off-by: Haiyue Wang &lt;haiyuewa@163.com&gt;
</content>
</entry>
<entry>
<title>Reuse timezone helper in getDateTimeOffsetNow</title>
<updated>2026-06-24T11:55:47+00:00</updated>
<author>
<name>Joel P J</name>
<email>joelpj@ami.com</email>
</author>
<published>2026-06-24T11:55:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=940f5e2ce09cfeb44d0cd88717e9fb50c1d69435'/>
<id>urn:sha1:940f5e2ce09cfeb44d0cd88717e9fb50c1d69435</id>
<content type='text'>
Refactor getDateTimeOffsetNow() to reuse the existing
details::getTimeZone() helper instead of calling
std::chrono::current_zone() directly.

This keeps timezone lookup and error logging in one place, while the
caller only handles the null case and returns empty strings when the
timezone cannot be resolved.

Also simplify two return sites by using braced return syntax in
getDateTimeOffsetNow() and getDateTimeIso8601() for readability.

Change-Id: I8737debe6b9fad34847d9aa53de01ec31d765f93
Signed-off-by: Joel P J &lt;joelpj@ami.com&gt;
</content>
</entry>
<entry>
<title>sdbusplus: use shorter type aliases</title>
<updated>2026-06-19T11:42:03+00:00</updated>
<author>
<name>Patrick Williams</name>
<email>patrick@stwcx.xyz</email>
</author>
<published>2026-06-19T11:42:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=a887d6d977f0c058f999dc2a7f479420623e12e4'/>
<id>urn:sha1:a887d6d977f0c058f999dc2a7f479420623e12e4</id>
<content type='text'>
The sdbusplus headers provide shortened aliases for many types.
Switch to using them to provide better code clarity and shorter
lines.  Possible replacements are for:
  * exception_t
  * manager_t
  * match
  * match_rules
  * message_t
  * object_t
  * slot_t

Change-Id: Iaf2a83fb67d57a6fafb664d27b349add17a96bcd
Signed-off-by: Patrick Williams &lt;patrick@stwcx.xyz&gt;
</content>
</entry>
<entry>
<title>Fix sd-bus header</title>
<updated>2026-06-03T16:35:39+00:00</updated>
<author>
<name>Ed Tanous</name>
<email>ed@tanous.net</email>
</author>
<published>2026-06-03T15:17:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=5137a404e15984311ad4e5836880f49fb27dde18'/>
<id>urn:sha1:5137a404e15984311ad4e5836880f49fb27dde18</id>
<content type='text'>
Not clear when this header changed.  But tidy flags it.  Fix it.

Change-Id: Ie55980b081de8526966b90cefed3e8a107b63275
Signed-off-by: Ed Tanous &lt;etanous@nvidia.com&gt;
</content>
</entry>
<entry>
<title>Fix PayloadTooLarge to return HTTP 413</title>
<updated>2026-05-12T15:52:23+00:00</updated>
<author>
<name>Rajeev Ranjan</name>
<email>ranjan.rajeev1609@gmail.com</email>
</author>
<published>2026-05-12T15:13:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=81dbaae64b3f5ec42d16f5642165dd639032cc6c'/>
<id>urn:sha1:81dbaae64b3f5ec42d16f5642165dd639032cc6c</id>
<content type='text'>
Previously, PayloadTooLarge errors incorrectly returned HTTP 400 Bad
Request. This change fixes the HTTP status to 413 Payload Too Large per
RFC 7231 so the response code matches the Base.PayloadTooLarge message
the service already emits.

Root cause: scripts/parse_registries.py is the generator that produces
redfish-core/src/error_messages.cpp. Its get_response_code() lookup
table did not list PayloadTooLarge, so the generator emitted the
default boost::beast::http::status::bad_request. Adding
"PayloadTooLarge": "payload_too_large" to the table fixes the
generator.

Change-Id: I6583b1156ffa4a6b4c99b8a5c82fdcb76ca3a13c
Signed-off-by: Rajeev Ranjan &lt;ranjan.rajeev1609@gmail.com&gt;
</content>
</entry>
</feed>
