<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/OpenBmc/bmcweb.git/redfish-core, 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-25T10:13:09+00:00</updated>
<entry>
<title>eventservice: Return Redfish 404 on PATCH</title>
<updated>2026-09-25T10:13:09+00:00</updated>
<author>
<name>Joel Pullokaran Jesin</name>
<email>joelpj@ami.com</email>
</author>
<published>2026-08-26T11:53:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=d95b89791a3bd7daced6ef2cf8f9fcd85bc9b33d'/>
<id>urn:sha1:d95b89791a3bd7daced6ef2cf8f9fcd85bc9b33d</id>
<content type='text'>
Return a Redfish ResourceNotFound error for PATCH requests to an
EventDestination that does not exist.

Before this change, PATCH on a missing subscription returned only HTTP
404 with no Redfish error payload. That left clients without the
standard error body used to identify the failing resource and the
expected message registry code.

After this change, PATCH /redfish/v1/EventService/Subscriptions/{Id}/
returns HTTP 404 with Base.1.19.ResourceNotFound when the requested
EventDestination is not present.

Tested:
PATCH /redfish/v1/EventService/Subscriptions/does-not-exist/
with {} returns HTTP 404 and
Base.1.19.ResourceNotFound.

Redfish Service Validator for
/redfish/v1/EventService/Subscriptions/ reports
PASS 5, WARN 0, FAIL 0, SKIP 5.

Change-Id: I84eeabc91a3b75e8a47173b99217b128506f5e8a
Signed-off-by: Joel Pullokaran Jesin &lt;joelpj@ami.com&gt;
</content>
</entry>
<entry>
<title>Use enum for watchdog timeout action property</title>
<updated>2026-09-25T03:50:53+00:00</updated>
<author>
<name>Vinothkumar Shanmugavel</name>
<email>vinothkumars@ami.com</email>
</author>
<published>2026-08-16T04:45:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=820d5ca4c53e1a82460e77fea87bc3615f86937b'/>
<id>urn:sha1:820d5ca4c53e1a82460e77fea87bc3615f86937b</id>
<content type='text'>
The dbusToRfWatchdogAction() function returns the watchdog timeout
action as std::string literals, which lacks compile-time type safety.
This can lead to typos or invalid values that are only caught at
runtime.

Convert this function to return computer_system::WatchdogTimeoutActions
enum instead. This enum is already defined in computer_system.hpp with
NLOHMANN_JSON_SERIALIZE_ENUM mapping and provides proper type checking.

The enum automatically serializes to the same JSON strings, so there is
no functional change to the Redfish API. This provides compile-time type
checking and better error handling through the Invalid enum value.

Tested:
- Verified HostWatchdogTimer TimeoutAction property serializes to
  identical JSON values.
- RSV: PASS: 5803, WARN: 353, FAIL: 0, NOT TESTED: 4894

Change-Id: I9aa667796a5bda7eddabd7d37a211d304b39796f
Signed-off-by: Vinothkumar Shanmugavel &lt;vinothkumars@ami.com&gt;
</content>
</entry>
<entry>
<title>redfish-core: Refactor TelemetryService lambda</title>
<updated>2026-09-24T06:45:19+00:00</updated>
<author>
<name>Yuvakumar Selvamani</name>
<email>yuvakumars@ami.com</email>
</author>
<published>2026-08-20T07:17:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=684d7c34a1974031f1f5b61982af49714975feaf'/>
<id>urn:sha1:684d7c34a1974031f1f5b61982af49714975feaf</id>
<content type='text'>
Extract the long D-Bus GetAllProperties callback lambda in
handleTelemetryServiceGet() into a named function,
afterGetTelemetryServiceProperties(), bound via std::bind_front(), per
the &lt;10 line lambda coding standard in docs/COMMON_ERRORS.md.

Also updates the DBus error log message from "respHandler DBus error {}"
to "afterGetTelemetryServiceProperties DBus error {}" to include the
function name, per review feedback.

Tested:
- Verified GET /redfish/v1/TelemetryService returns identical values
  (MaxReports, MinCollectionInterval, Status,
  SupportedCollectionFunctions) to the pre-refactor lambda, with a live
  phosphor-telemetry backend.
- Redfish Service Validator passed with a real MetricReportDefinition
  and MetricReport present: 0 Fail on all TelemetryService endpoints
  (5451 Pass / 353 Warn / 9 Fail overall; the 9 failures are
  pre-existing, unrelated Managers/bmc errors).

Change-Id: I97733e7bedf5868625f32f2008c39b9a9b69abdd
Signed-off-by: Yuvakumar Selvamani &lt;yuvakumars@ami.com&gt;
</content>
</entry>
<entry>
<title>Use the privilege entry that matches the route</title>
<updated>2026-09-21T03:46:22+00:00</updated>
<author>
<name>Bill Chan</name>
<email>bill_chan@jabil.com</email>
</author>
<published>2026-08-25T07:50:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=37849150e2f3fc4300f3fb2d60b1f3c2df115b4f'/>
<id>urn:sha1:37849150e2f3fc4300f3fb2d60b1f3c2df115b4f</id>
<content type='text'>
Five routes are registered with a privilege registry entry that names a
different resource, or a different method, than the route serves:

- certificate_service: the Truststore certificate collection GET uses
  getCertificate.  The POST on the same URL already uses
  postCertificateCollection, and the LDAP and HTTPS certificate
  collections use getCertificateCollection.
- storage_chassis: the chassis drive GET uses getChassis, although the
  handler serves a Drive resource and the collection above it uses
  getDriveCollection.
- redfish_v1: the JsonSchemas collection and a single JsonSchemaFile
  hold each other's entry.
- metric_report_definition and aggregation_service: two HEAD routes use
  the get* entry where the head* entry exists.

Every one of these pairs resolves to the same privilege set today, so
no client sees a change.  They are corrected so the routes stay right
if the registry ever distinguishes a pair, and so the next reader can
trust the entry name.

Tested:
Redfish Service Validator against a cypress BMC image carrying this
change, and again against one without it: both pass, with no failures
and identical warning and error counts.  The routes this touches were
traversed in both runs, bar AggregationSources, which that build does
not register.

Verified that each replacement entry exists
in redfish-core/include/registries/privilege_registry.hpp, that the
resource type matches what the handler serves, for example
storage_chassis emits #Drive.v1_7_0.Drive, and that every changed pair
resolves to the same privilege set as before: getCertificate and
getCertificateCollection are both privilegeSetConfigureManager, while
the JsonSchemaFile pair and both HEAD pairs are privilegeSetLogin.  No
client-visible behavior changes as a result.

Change-Id: Ib06a2f0e0a43dcfe1fbc7127f6345e40c5202c5f
Signed-off-by: Bill Chan &lt;bill_chan@jabil.com&gt;
</content>
</entry>
<entry>
<title>Report rejected action values with ValueNotInList</title>
<updated>2026-09-21T02:59:20+00:00</updated>
<author>
<name>Bill Chan</name>
<email>bill_chan@jabil.com</email>
</author>
<published>2026-08-25T07:36:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=e7f2dffeb79b1d58fcf058aa7a842fcf83e1f810'/>
<id>urn:sha1:e7f2dffeb79b1d58fcf058aa7a842fcf83e1f810</id>
<content type='text'>
Manager.Reset, Manager.ResetToDefaults, Chassis.Reset and
UpdateService.SimpleUpdate reject an unsupported parameter value with
Base.1.19.ActionParameterNotSupported.  That message reads "The
parameter %1 for the action %2 is not supported on the target
resource", and its resolution tells the client to remove the parameter
and resubmit.  ResetType and TransferProtocol are required parameters
of those actions, so the client cannot act on that advice.  The
arguments were also passed in the wrong order, putting the submitted
value where the parameter name belongs.

All four parameters are published enumerations: ResetType through the
ResetActionInfo resources and the ResetType@Redfish.AllowableValues
annotation, TransferProtocol through
TransferProtocol@Redfish.AllowableValues.  A value outside those lists
is Base.1.19.ActionParameterValueNotInList, which names the parameter,
the value and the action, and tells the client to choose a supported
value.

This is the same correction commit 191526da made for
ComputerSystem.Reset.  The action argument carries the qualified action
name, as it appears in the action's target URI and in the existing
UpdateService.SimpleUpdate calls in update_service.hpp.

Tested:
Verified on a QEMU BMC, machine cypress, running a downstream OpenBMC
build carrying this change.

POST /redfish/v1/Managers/bmc/Actions/Manager.Reset with
{"ResetType":"Nope"} returns HTTP 400 and
Base.1.19.ActionParameterValueNotInList with MessageArgs
["Nope", "ResetType", "Manager.Reset"].

POST /redfish/v1/Managers/bmc/Actions/Manager.ResetToDefaults with the
same body returns HTTP 400 and the same MessageId with MessageArgs
["Nope", "ResetType", "Manager.ResetToDefaults"].

POST /redfish/v1/Chassis/&lt;id&gt;/Actions/Chassis.Reset with the same body
returns HTTP 400 and MessageArgs
["Nope", "ResetType", "Chassis.Reset"].

The UpdateService.SimpleUpdate site was not exercised: that build has
redfish-allow-simple-update disabled, so the action is not registered.

Change-Id: I2db0ddd1cec4d7efe512fe43d8ac7d85d112ab52
Signed-off-by: Bill Chan &lt;bill_chan@jabil.com&gt;
</content>
</entry>
<entry>
<title>Report the property the request actually failed on</title>
<updated>2026-09-21T02:59:01+00:00</updated>
<author>
<name>Bill Chan</name>
<email>bill_chan@jabil.com</email>
</author>
<published>2026-08-25T07:36:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=46c66cfd316121fe3e65daa3c4c0d7105663eb01'/>
<id>urn:sha1:46c66cfd316121fe3e65daa3c4c0d7105663eb01</id>
<content type='text'>
Three error paths name a property or condition that has nothing to do
with the failure, so a client cannot tell what to correct.

- account_service: a RoleId that maps to no privilege reports
  PropertyValueNotInList for Locked with the value true.  RoleId is the
  property that was rejected, and its submitted value is what the client
  needs to see.
- systems: a PATCH of TrustedModuleRequiredToBoot on a system with no
  TPM.Policy object reports PropertyValueNotInList with the value
  "ComputerSystem", which is neither a submitted value nor an
  enumeration member.  Nothing is wrong with the value; the property
  cannot be written on this system, which is PropertyNotWritable.
- openbmc_managers: Direction is checked against the enumeration
  {Ceiling, Floor}, so a rejected value is PropertyValueNotInList, not
  PropertyValueTypeError.  The arguments were also reversed, since
  PropertyValueTypeError takes the value first.

Tested:
Verified on a QEMU BMC, machine cypress, running a downstream OpenBMC
build carrying this change.

PATCH /redfish/v1/AccountService/Accounts/root with {"RoleId":"Bogus"}
returns HTTP 400 and Base.1.19.PropertyValueNotInList with MessageArgs
["\"Bogus\"", "RoleId"], where the same request previously reported
Locked with the value true.

Not exercised on that build: the TrustedModuleRequiredToBoot site,
because that platform has a TPM.Policy object so the empty-subtree
branch never runs; and the OEM fan Direction site, because the machine
exposes no PID or stepwise fan controllers to PATCH.

Change-Id: I408456a7040f095b43a952532f761ec197c24146
Signed-off-by: Bill Chan &lt;bill_chan@jabil.com&gt;
</content>
</entry>
<entry>
<title>Refactor eventlog_utils respHandler lambdas</title>
<updated>2026-09-19T14:51:47+00:00</updated>
<author>
<name>Yuvakumar Selvamani</name>
<email>yuvakumars@ami.com</email>
</author>
<published>2026-08-17T12:01:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=384a6b3e04d20f615cbc33260b4fb572f8749818'/>
<id>urn:sha1:384a6b3e04d20f615cbc33260b4fb572f8749818</id>
<content type='text'>
The dBusEventLogEntryDelete and dBusLogServiceActionsClear functions
each contained an inline respHandler lambda that triggered the
long-lambda ast-grep rule, requiring an inline suppression
(// ast-grep-ignore: long-lambda).

This commit extracts each lambda into a separate named function,
afterDBusEventLogEntryDelete and afterDBusLogServiceActionsClear
respectively, and uses std::bind_front to handle the asynchronous
callback. This aligns the code with the preferred bmcweb pattern for
D-Bus callbacks, improves readability, and allows the removal of the
static analysis suppressions.

Tested on AST2600 SoC (with PACKAGECONFIG `redfish-dbus-log` enabled;
disabled by default).
- `DELETE .../EventLog/Entries/1` (real entry)
  Expected: HTTP 200 Base.1.19.Success, entry removed
  Actual:   HTTP 200 Base.1.19.Success, entry removed
- `DELETE .../EventLog/Entries/999` (nonexistent)
  Expected: HTTP 404 Base.1.19.ResourceNotFound
  Actual:   HTTP 404 Base.1.19.ResourceNotFound
- `POST .../EventLog/Actions/LogService.ClearLog`
  Expected: HTTP 200 Base.1.19.Success, all entries cleared
  Actual:   HTTP 200 Base.1.19.Success, all entries cleared
- RSV: 5845 Pass / 353 Warn / 0 Fail

Change-Id: I323a0813fef4f04622a71f27258fe9b1930ec6cd
Signed-off-by: Yuvakumar Selvamani &lt;yuvakumars@ami.com&gt;
</content>
</entry>
<entry>
<title>redfish-core: Refactor ThermalSubsystem Head</title>
<updated>2026-09-19T14:49:16+00:00</updated>
<author>
<name>Yuvakumar Selvamani</name>
<email>yuvakumars@ami.com</email>
</author>
<published>2026-08-20T07:17:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=7d69721509c9e4e9f693c056fdd1d3474edef328'/>
<id>urn:sha1:7d69721509c9e4e9f693c056fdd1d3474edef328</id>
<content type='text'>
Extract the long respHandler lambda in
handleThermalSubsystemCollectionHead() into a named function,
doThermalSubsystemCollectionHead(), bound via std::bind_front(),
matching the pattern used elsewhere in the file, per the &lt;10 line lambda
coding standard in docs/COMMON_ERRORS.md.

Tested on AST2600 SoC:
- `HEAD /redfish/v1/Chassis/&lt;invalid-id&gt;/ThermalSubsystem`
  Expected: HTTP 404 Base.1.19.ResourceNotFound
  Actual:   HTTP 404 Base.1.19.ResourceNotFound

- `HEAD /redfish/v1/Chassis/&lt;valid-id&gt;/ThermalSubsystem`
  Expected: HTTP 200 with Link:
    &lt;/redfish/v1/JsonSchemas/ThermalSubsystem/ThermalSubsystem.json&gt;
  Actual: HTTP 200 with the identical Link header - confirms the
    extracted doThermalSubsystemCollectionHead() success branch

- Redfish Service Validator: 5845 Pass / 353 Warn / 0 Fail

Change-Id: I9ae5884bf207f79527bc83f1655a7cee9c0b88bb
Signed-off-by: Yuvakumar Selvamani &lt;yuvakumars@ami.com&gt;
</content>
</entry>
<entry>
<title>redfish-core: Refactor AggregationSource lambda</title>
<updated>2026-09-18T10:06:12+00:00</updated>
<author>
<name>Yuvakumar Selvamani</name>
<email>yuvakumars@ami.com</email>
</author>
<published>2026-08-20T07:17:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=f6c7093efff3afdda585367daa8e5cb7847d4dd8'/>
<id>urn:sha1:f6c7093efff3afdda585367daa8e5cb7847d4dd8</id>
<content type='text'>
Extract the long getSatelliteConfigs() callback lambda in
handleAggregationSourcePatch() into a named function,
afterGetSatelliteConfigsForPatch(), bound via std::bind_front(), per the
&lt;10 line lambda coding standard in docs/COMMON_ERRORS.md.

Tested:
- Sent PATCH /redfish/v1/AggregationService/AggregationSources/&lt;id&gt; for
an AggregationSourceId that exists in Entity Manager sources and
confirmed PropertyNotWritable is returned for UserName, same as before
the refactor.
- Sent PATCH for an AggregationSourceId that doesn't exist anywhere and
confirmed ResourceNotFound is returned, same as before.
- Redfish Service Validator passed with no new errors or warnings
introduced.

Change-Id: I995b97730b5a2b224f30e7afceb3e2c3c3c2e6ff
Signed-off-by: Yuvakumar Selvamani &lt;yuvakumars@ami.com&gt;
</content>
</entry>
<entry>
<title>subprocessor: Add Status.State/Health to cores</title>
<updated>2026-09-17T21:04:52+00:00</updated>
<author>
<name>George Liu</name>
<email>liuxiwei@inspur.com</email>
</author>
<published>2023-07-14T06:57:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/OpenBmc/bmcweb.git/commit/?id=58f34b5f9133c3a302acbf517aefefde2b9746cd'/>
<id>urn:sha1:58f34b5f9133c3a302acbf517aefefde2b9746cd</id>
<content type='text'>
Populate Redfish Status.Health and Status.State for processor core
resources

resource_utils::getResourceState() and getResourceHealth() are extended
to accept MapperServiceMap and use the first service implementing the
required interface. This avoids duplicate requests when multiple
services advertise the same interface for a core object

This commit also changes the iterator name in HEAD and GET path from
`it` to `coreIt` for better readability as well as passing coreId by
reference to avoid copies

Tested:

```
curl -k -X GET https://${bmc}/redfish/v1/Systems/system/Processors/cpu0/SubProcessors/core0
{
  ...
  "Status": {
    "Health": "OK",
    "State": "Enabled"
  }
}
```
- Where "State" can be "Present", "Available", "Enabled"

- Redfish Validator Passed

Change-Id: I5833541dceb9627b56b96e8235afcde78a09081f
Signed-off-by: Myung Bae &lt;myungbae@us.ibm.com&gt;
Signed-off-by: Justin Nguyen &lt;justinnanguyen@gmail.com&gt;
</content>
</entry>
</feed>
