Redfish multi-host hint in entity-manager

Patrick Williams patrick at stwcx.xyz
Thu Jun 27 07:18:43 AEST 2024


Hello,

I wanted to raise awareness of a proposed dbus interface to be used as a
hint in bmcweb to implement the multi-host Redfish support:

    https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/72414

Meta now has two systems upstream that are considered "multi-host":
Bletchley and Yosemite4.  This means that a single BMC manages multiple
host computer systems, which are usually populated as some kind of
"blade-like" device into a larger chassis.  We've been enhancing most of
the backend applications over the last 2 years to facilitate this, but
we've been slow at getting Redfish support in bmcweb for it.

The original design in most of the applications was/is that if you have
a dbus path like ".../hostN", then "host0" refers to the single-host
system and "host[1-N]" refer to individual locations in a multi-host
system.  While this design point is relatively easy to implement it
presents a challenge for bmcweb: how do you define an external endpoint
URI name and map it to internal dbus objects?  The typical "single-host"
approach has been to hardcode a Redfish URI (like "/system") to the
corresponding single-host dbus object.  The preference from the bmcweb
maintainers is that this is done in a less hardcoded way.

The typical approach to this, for elements where we have multiple of
them, is that bmcweb can do some sort of mapper query to find them all.
Sensors, inventory, etc. typically operate this way.  However, for
multi-host backend elements we usually don't have an obvious way to name
the URI due to differences in path leaf names across various
applications: hostN, postcodeN, etc.  Ideally, each of these backends
would have some consistent name, path or association to something
consistent that bmcweb can always use for creating the URI, but this
will take work.

My proposal in the short-term is to use entity-manager configs to create
a "hint" interface for bmcweb: Inventory.Decorator.ManagedHost.  This
interface will have an index property which can be used to find the
appropriate backend.

A quick summary of the design and changes would be:

- Inventory.Decorator.ManagedHost is defined and implemented in
  multi-host entity-manager configs.  This will add the interface to
  entity-manager paths such as
  "/xyz/openbmc_project/inventory/Sentinel_Dome_3" (with index = 3).

    - https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/72414

- bmcweb will maintain the existing "Systems/system" URI for single-host systems
  [for a time] (using the redfish-system-uri-name meson option).
  Multi-host systems should set this to an empty string which will
  disable that default URI.

- Inventory.Decorator.ManagedHost will be used by bmcweb, via a mapper
  look up, to determine all of the ComputerSystem paths.  This means
  that an "/xyz/openbmc_project/inventory/Sentinel_Dome_3" with the
  interface will cause "/redfish/v1/Systems/Sentinel_Dome_3" to become a
  valid URI.  When bmcweb needs to interact with the
  phosphor-state-manager objects, it will use the documented convention
  and the "HostIndex" property to construct the dbus path.

- As time permits, single-host systems with entity-manager configs should
  create their own ManagedHost decorators and after sufficient time has
  elapsed the `redfish-system-uri-name` option will be deleted.  [I'll
  let the bmcweb maintainers determine the timelines here but probably
  at least 6 months from initial support.]

- Once we figure out the set of "strange mappings bmcweb has to do", we
  will follow up with design proposals on those repositories to create
  associations back to the ManagedHosts in the inventory model, which
  bmcweb will be able to use directly [approximately 6-12 months in the
  future].

Are there any gaps or concerns with this proposal?

-- 
Patrick Williams
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20240626/8e677c4f/attachment.sig>


More information about the openbmc mailing list