Skip to content

Latest commit

 

History

History

schemas

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Entity manager configuration file schema
----------------------------------------

Entity manager configuration files are JSON documents and can be validated with
a JSON schema[1].  This document provides an overview of the general structure
of an entity manager configuration file.

An entity manager configuration file consists of one or more entity manager
configurations.  This provides flexibility for system designers - the
configuration data for an entire platform or set of platforms can be expressed
in a single file, or can be organized into several smaller files.  Thus, the
top most schema describes a single object or an array of objects.

A single entity manager configuration
----------------------------------------
At its core entity manager simply exports objects onto DBus when a specific
event occurs.  As such, an entity manager configuration provides a syntax for
describing the dbus interfaces to export, the object paths on which to add the
interfaces and the event that should trigger the export.  This is accomplished
with four properties.

Type
----------------------------------------
The type property identifies the type of the configuration.  When exported,
configuration data will be instantiated as grandchildren of
/xyz/openbmc_project/inventory/system/<Type>.  For a comprehensive list of
supported types, consult the schema (global.json).

Name
----------------------------------------
The name property identifies the name of the configuration.  When exported,
configuration data will be instantiated as children of
/xyz/openbmc_project/inventory/system/<Type>/<Name>.  Additionally, any DBus
interfaces listed in openbmc-dbus.json will be added on
/xyz/openbmc_project/inventory/system/<Type>/<Name>.

Probe
----------------------------------------
The probe property describes the event which will cause entity manager to
export the configuration to DBus, making it available to other applications.

Exposes
----------------------------------------
The exposes property describes the configuration data at its most specific
level.  The exposes property is an array of heterogeneous configuration data.
Each exposes element has its own schema which is outlined by the subschemas in
the schemas directory.  Each schema must require a type and name (not to be
confused with the Type and Name properties of the parent JSON object) property
since entity manager will construct the Dbus interface name and object path
based on those properties:

/xyz/openbmc_project/inventory/system/Board/RiserCard1/<Name>:
   xyz.openbmc_project.Configuration.<Type>:
     <remaining properties defined by exposes subschema>

Adding new exposes property subschema
----------------------------------------
New subschema for the exposes property must be added to the schema directory,
and then referenced from global.json at /definitions/EMExposesElement.  Exposes
element subschema must require a type and name property (the validator will
fail otherwise) and should explicitly enumerate all properties and use
additionalProperties so mistakes can be found
during validation.

Adding new Dbus interfaces
----------------------------------------
To export new interfaces on the configuration parent object e.g.:
/xyz/openbmc_project/inventory/system/Board/RiserCard1 add additional subschema
to openbmc-dbus.json.

[1] https://json-schema.org/