xref: /openbmc/bmcweb/DBUS_USAGE.md (revision 8ece0e457ee994e54c23ee7393fbce831d81a954)
1f4f2643aSPatrick Williams# dbus usage
2f4f2643aSPatrick Williams
3e2415fa7SEd TanousThe following are guidelines for bmcweb's use of DBus to construct Redfish
4e2415fa7SEd Tanousschemas:
5e2415fa7SEd Tanous
6e2415fa7SEd Tanous- Do not require (ie set 500 internal error on) an implementation present a
7e2415fa7SEd Tanous  property that wasn't in the first commit of the interface unless it can be
8e2415fa7SEd Tanous  verified that _all_ OpenBMC implementers of the interface support that
9e2415fa7SEd Tanous  property.
10e2415fa7SEd Tanous- If an implementation presents a property that doesn't match the type specified
11*8ece0e45SEd Tanous  by the interface at any version, it shall be reported as a 500 error.
12e2415fa7SEd Tanous- If the DBus interface definition has an "unknown" or "unspecified" value,
13e2415fa7SEd Tanous  detecting these will omit the property from the Redfish tree, in line with the
14e2415fa7SEd Tanous  Redfish specification.
15e2415fa7SEd Tanous- All DBus interfaces on all object paths are optional. An object missing an
16e2415fa7SEd Tanous  interface is never an error, and shall simply omit the relevant properties
17e2415fa7SEd Tanous  and/or actions from that Redfish Resource.
18e2415fa7SEd Tanous- bmcweb will code to the DBus interface itself. This means that daemons are
19e2415fa7SEd Tanous  expected to handle functionally bad, but DBus-correct input in their own
20e2415fa7SEd Tanous  process, and return appropriate return codes. This is done to reduce the
21e2415fa7SEd Tanous  duplication in input processing between the various user-facing daemons.
22e2415fa7SEd Tanous- There are interfaces for which there is an expectation that there will only
23e2415fa7SEd Tanous  ever be one producer in the project (ex bmc networking, user management). In
24e2415fa7SEd Tanous  these cases, it is desirable to call the daemon by well known name directly.
25e2415fa7SEd Tanous  Bmcweb APIs should call the mapper in cases where it's reasonably expected
26e2415fa7SEd Tanous  that multiple implementations exist (ex, CPU management, Sensors).
27