| commit | bbacd2326f84fb821c634e3cdfa78c2c7fedc0cf | [log] [tgz] |
|---|---|---|
| author | Gunnar Mills <gmills@us.ibm.com> | Thu Oct 17 11:57:52 2019 -0500 |
| committer | Gunnar Mills <gmills@us.ibm.com> | Thu Oct 17 11:59:06 2019 -0500 |
| tree | bb775a26d232106afba88bd13c1f5936d39c0b95 | |
| parent | ded627c42f5e5319e3704fff742a0227c05f00a9 [diff] |
Update object-mapper.md link object-mapper.md is moving under architecture/ as part of https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/26250/ 26250 should merge before this is merged. Change-Id: Icf4ace8d827cd6fbfb61f41008b4662635755a3c Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
Phosphor Inventory Manager (PIM) is an implementation of the xyz.openbmc_project.Inventory.Manager DBus interface, and supporting tools. PIM uses a combination of build-time YAML files, run-time calls to the Notify method of the Manager interface, and association definition JSON files to provide a generalized inventory state management solution.
PIM includes a YAML parser (pimgen.py). For PIM to do anything useful, a set of YAML files must be provided externally that tell it what to do. Examples can be found in the examples directory.
The following top level YAML tags are supported:
events
Supported event tags are:
Subsequent tags are defined by the event type.
match
Supported match tags are:
startup
Supported startup tags are:
filters
Supported filter tags are:
Subsequent tags are defined by the filter type.
The available filters provided by PIM are:
propertyChangedTo
The property under test is obtained from an sdbus message generated from an org.freedesktop.DBus.Properties.PropertiesChanged signal payload.
Supported arguments for the propertyChangedTo filter are:
propertyIs
The property under test is obtained by invoking org.freedesktop.Properties.Get on the specified interface.
Supported arguments for the propertyIs filter are:
The service argument is optional. If provided that service will be called explicitly. If omitted, the service will be obtained with an xyz.openbmc_project.ObjectMapper lookup.
propertyIs can be used in an action condition context when the action operates on a dbus object path.
actions
Supported action tags are:
Subsequent tags are defined by the action type.
The available actions provided by PIM are:
destroyObject
Supported arguments for the destroyObject action are:
Conditions are tested and logically ANDed. If the conditions do not pass, the object is not destroyed. Any condition that accepts a path parameter is supported.
setProperty
Supported arguments for the setProperty action are:
Conditions are tested and logically ANDed. If the conditions do not pass, the property is not set. Any condition that accepts a path parameter is supported.
createObjects
Supported arguments for the createObjects action are:
PIM can create associations between inventory items and other D-Bus objects.
This functionality is optional and is controlled with the --enable-associations configure option. It defaults to disabled.
To use this, the associations to create should be defined in a JSON file which is specified by the ASSOCIATIONS_FILE_PATH configure variable, which defaults to /usr/share/phosphor-inventory-manager/associations.json. This file is processed at runtime.
An example of this JSON is:
[
{
"path": "system/chassis/motherboard/cpu0/core1",
"endpoints":
[
{
"types":
{
"fType": "sensors",
"rType": "inventory"
},
"paths":
[
"/xyz/openbmc_project/sensors/temperature/p0_core0_temp"
]
}
]
}
]
Then, when/if PIM creates the xyz/openbmc_project/system/chassis/motherboard/cpu0/core1 inventory object, it will add an xyz.openbmc_project.Association.Definitions interface on it such that the object mapper creates the 2 association objects:
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core1/sensors
endpoints property:
['/xyz/openbmc_project/sensors/temperature/p0_core0_temp']
/xyz/openbmc_project/sensors/temperature/p0_core0_temp/inventory
endpoints property:
['/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core1']
The JSON description is:
[
{
"path": "The relative path of the inventory object to create the
xyz.openbmc_project.Association.Definitions interface on."
"endpoints":
[
{
"types":
{
"fType": "The forward association type."
"rType": "The reverse association type."
},
"paths":
[
"The list of association endpoints for this inventory path
and association type."
]
}
]
}
]
After running pimgen.py, build PIM using the following steps:
./bootstrap.sh
./configure ${CONFIGURE_FLAGS}
make
To clean the repository run:
./bootstrap.sh clean