blob: 899c4c81ca35fdf3ff3be1d3788b60a2a905552d [file] [log] [blame]
# Example PDM configuration file.
- name: example path group
description: >
'A path group is a named collection of DBus 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 DBus property names and associated metadata.
Properties in a group must all have the same DBus 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 DBus 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 DBus 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 evaulates.
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