| 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/ |