summaryrefslogtreecommitdiffstats
path: root/README.md
blob: c97db6dcd8b497d0097d84067c8055b5944ea0bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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 and run-time calls to the
Notify method of the Manager interface to provide a generalized inventory
state management solution.

## YAML
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:

* description - An optional description of the file.
* events - One or more events that PIM should monitor.

----
**events**

Supported event tags are:

* name - A globally unique event name.
* description - An optional description of the event.
* type - The event type.  Supported types are: *match* and *startup*.
* actions - The responses to the event.

Subsequent tags are defined by the event type.

-----
**match**

Supported match tags are:

* signatures - A DBus match specification.
* filters - Filters to apply when a match occurs.

-----
**startup**

Supported startup tags are:

* filters - Filters to apply at startup.

----
**filters**

Supported filter tags are:

* name - The filter to use.

Subsequent tags are defined by the filter type.

The available filters provided by PIM are:

* propertyChangedTo - Only match events when the specified property has
the specified value.
* propertyIs - Only match events when the specified property has
the specified value.

----
**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:
* interface - The interface hosting the property to be checked.
* property - The property to check.
* value - The value to check.

----
**propertyIs**

The property under test is obtained by invoking
org.freedesktop.Properties.Get on the specified interface.

Supported arguments for the propertyIs filter are:
* path - The object hosting the property to be checked.
* interface - The interface hosting the property to be checked.
* property - The property to check.
* value - The value to check.
* service - An optional DBus service name.

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:

* name - The action to perform.

Subsequent tags are defined by the action type.

The available actions provided by PIM are:

* destroyObject - Destroy the specified DBus object.
* setProperty - Set the specified property on the specified DBus object.

----
**destroyObject**

Supported arguments for the destroyObject action are:
* paths - The paths of the objects to remove from DBus.
* conditions - An array of conditions.

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:
* interface - The interface hosting the property to be set.
* property - The property to set.
* paths - The objects hosting the property to be set.
* value - The value to set.
* conditions - An array of conditions.

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:
* objs - A dictionary of objects to create.


----

## Building
After running pimgen.py, build PIM using the following steps:

```
    ./bootstrap.sh
    ./configure ${CONFIGURE_FLAGS}
    make
```

To clean the repository run:

```
 ./bootstrap.sh clean
```
OpenPOWER on IntegriCloud