Name
Date
Size
#Lines
LOC

..--

README.mdH A D07-Dec-20223.1 KiB7454

firmware.jsonH A D19-Feb-2025767 2120

global.jsonH A D12-Feb-20258.8 KiB187186

ibm.jsonH A D04-Sep-20245.4 KiB110109

intel.jsonH A D04-Sep-2024779 3029

leak_detector.jsonH A D08-Nov-20241.4 KiB4443

legacy.jsonH A D10-Jan-202559.4 KiB2,0032,002

mctp.jsonH A D12-Feb-20251.6 KiB5049

openbmc-dbus.jsonH A D13-Dec-20248.1 KiB199198

pid.jsonH A D04-Sep-20243.5 KiB124123

pid_zone.jsonH A D04-Sep-2024996 3635

satellite_controller.jsonH A D04-Sep-20241.2 KiB3433

stepwise.jsonH A D04-Sep-20242.2 KiB8281

virtual_sensor.jsonH A D19-Sep-20242.4 KiB5958

README.md

1 # Entity manager configuration file schema
2 
3 Entity manager configuration files are JSON documents and can be validated with
4 a [JSON schema][1]. This document provides an overview of the general structure
5 of an entity manager configuration file.
6 
7 An entity manager configuration file consists of one or more entity manager
8 configurations. This provides flexibility for system designers - the
9 configuration data for an entire platform or set of platforms can be expressed
10 in a single file, or can be organized into several smaller files. Thus, the top
11 most schema describes a single object or an array of objects.
12 
13 To remain consistent with the OpenBMC CPP source code file name guidelines,
14 entity manager configuration file and schema file names must be
15 `lower_snake_case`.
16 
17 ## A single entity manager configuration
18 
19 At its core entity manager simply exports objects onto DBus when a specific
20 event occurs. As such, an entity manager configuration provides a syntax for
21 describing the dbus interfaces to export, the object paths on which to add the
22 interfaces and the event that should trigger the export. This is accomplished
23 with four properties.
24 
25 ## Type
26 
27 The type property identifies the type of the configuration. When exported,
28 configuration data will be instantiated as grandchildren of
29 `/xyz/openbmc_project/inventory/system/<Type>`. For a comprehensive list of
30 supported types, consult the schema (global.json).
31 
32 ## Name
33 
34 The name property identifies the name of the configuration. When exported,
35 configuration data will be instantiated as children of
36 `/xyz/openbmc_project/inventory/system/<Type>/<Name>`. Additionally, any DBus
37 interfaces listed in openbmc-dbus.json will be added on
38 `/xyz/openbmc_project/inventory/system/<Type>/<Name>`.
39 
40 ## Probe
41 
42 The probe property describes the event which will cause entity manager to export
43 the configuration to DBus, making it available to other applications.
44 
45 ## Exposes
46 
47 The exposes property describes the configuration data at its most specific
48 level. The exposes property is an array of heterogeneous configuration data.
49 Each exposes element has its own schema which is outlined by the subschemas in
50 the schemas directory. Each schema must require a type and name (not to be
51 confused with the Type and Name properties of the parent JSON object) property
52 since entity manager will construct the Dbus interface name and object path
53 based on those properties:
54 
55 `/xyz/openbmc_project/inventory/system/Board/RiserCard1/<Name>`:
56 `xyz.openbmc_project.Configuration.<Type>`:
57 `<remaining properties defined by exposes subschema>`
58 
59 ## Adding new exposes property subschema
60 
61 New subschema for the exposes property must be added to the schema directory,
62 and then referenced from global.json at /definitions/EMExposesElement. Exposes
63 element subschema must require a type and name property (the validator will fail
64 otherwise) and should explicitly enumerate all properties and use
65 additionalProperties so mistakes can be found during validation.
66 
67 ## Adding new Dbus interfaces
68 
69 To export new interfaces on the configuration parent object e.g.:
70 /xyz/openbmc_project/inventory/system/Board/RiserCard1 add additional subschema
71 to openbmc-dbus.json.
72 
73 [1]: https://json-schema.org/
74