| # Example PDM configuration file. |
| |
| - name: example path group |
| description: > |
| 'A path group is a named collection of D-Bus object |
| paths and associated metadata. These collections |
| serve only to be referenced by other configuration |
| directives. |
| |
| The metadata element has different uses depending |
| on the referencing directive. |
| |
| Within a single configuration file path group names |
| must be unique. The same name can appear in multiple |
| configuration files; however, the referencing directive |
| will only search for the group in the same configuration |
| file.' |
| class: group |
| group: path |
| members: |
| - meta: PATH |
| path: /xyz/openbmc_project/testing/inst1 |
| - meta: PATH |
| path: /xyz/openbmc_project/testing/inst2 |
| - meta: PATH |
| path: /xyz/openbmc_project/testing/inst3 |
| - meta: PATH |
| path: /xyz/openbmc_project/testing/inst4 |
| |
| - name: example property group |
| description: > |
| 'Like path groups, a property group is a named collection |
| of D-Bus property names and associated metadata. |
| |
| Properties in a group must all have the same D-Bus type signature |
| and must be explicitly declared.' |
| class: group |
| group: property |
| type: uint32 |
| members: |
| - interface: xyz.openbmc_project.Sensor.Value |
| meta: PROPERTY |
| property: ValueA |
| - interface: xyz.openbmc_project.Sensor.Value |
| meta: PROPERTY |
| property: ValueB |
| |
| - name: example property watch |
| description: > |
| 'A property watch instructs PDM to maintain a cache of the state |
| of the specified properties on the specified D-Bus objects. |
| |
| An optional callback can be triggered when property values change.' |
| class: watch |
| watch: property |
| paths: example path group |
| properties: example property group |
| callback: example count condition |
| |
| - name: example journal callback |
| description: > |
| 'Callbacks are actions PDM should take when instructed to do so. |
| |
| Some callback types refer to a group of paths and group of properties |
| in a similar fashion as the property watch directive. |
| |
| The journal callback logs the specified message to the systemd journal |
| with the specified severity. |
| |
| Additionally, the journal callback will add to the journal key value |
| pair metadata for each property in the specified property group with |
| the key being the property element metadata and the value being the |
| property value.' |
| class: callback |
| callback: journal |
| paths: example path group |
| properties: example property group |
| severity: INFO |
| message: Hello world from PDM! |
| |
| - name: example method callback |
| description: > |
| 'The method callback invokes the specified D-Bus method.' |
| class: callback |
| callback: method |
| service: org.freedesktop.systemd1 |
| path: /org/freedesktop/systemd1 |
| interface: org.freedesktop.systemd1.Manager |
| method: StartUnit |
| args: |
| - value: foo.unit |
| type: string |
| - value: replace |
| type: string |
| |
| - name: example callback group |
| description: > |
| 'Callbacks groups are simply named collections of other callbacks. |
| Configuration file directives can only refer to a single callback. |
| Through use of a group, these configuration file directives can |
| refer to more than one callback. |
| |
| For example for a given event, one may wish to trace multiple |
| messages to the systemd journal. The journal callback does not |
| support tracing multiple messages. To do that, define a callback |
| group composed of multiple journal callbacks.' |
| |
| class: callback |
| callback: group |
| members: |
| - example journal callback |
| - example deferred condition |
| |
| - name: example count condition |
| description: > |
| 'Conditions or conditional callbacks apply a test prior to invoking |
| the callback function. |
| |
| All conditional callbacks must specify the callback to issue if |
| the condition evaluates. |
| |
| The count condition applies the op comparison operator to the value of each |
| property in the specified groups. It then counts the number of properties |
| that pass the comparison, and applies another comparison on the result |
| against the specified bound. |
| |
| For example, a callback that requires at least three temperature sensors |
| in the group to be higher than 115 degrees might use a count condition |
| with an op of >, a count op of >=, a bound of 115, and a countbound of 3.' |
| |
| class: condition |
| condition: count |
| paths: example path group |
| properties: example property group |
| callback: example callback group |
| countop: '>=' |
| countbound: 3 |
| op: '>=' |
| bound: 115 |
| |
| - name: example deferred condition |
| description: > |
| 'Deferred conditions operate in the same fashion as conditional callbacks |
| with the added behavior that when the condition is tested and is met, |
| invocation of the callback is deferred by the interval specified. |
| |
| When the configured time has elapsed, if the condition has not been reevaluated |
| the callback is invoked. |
| |
| Any condition type can be deferred in this way by setting the defer attribute.' |
| |
| class: condition |
| condition: count |
| paths: example path group |
| properties: example property group |
| defer: 1000us |
| callback: example callback group |
| countop: '>=' |
| countbound: 3 |
| op: '>=' |
| bound: 115 |