1# Example PDM configuration file.
2
3- name: example path group
4  description: >
5    'A path group is a named collection of DBus object
6    paths and associated metadata.  These collections
7    serve only to be referenced by other configuration
8    directives.
9
10    The metadata element has different uses depending
11    on the referencing directive.
12
13    Within a single configuration file path group names
14    must be unique.  The same name can appear in multiple
15    configuration files; however, the referencing directive
16    will only search for the group in the same configuration
17    file.'
18  class: group
19  group: path
20  members:
21    - meta: PATH
22      path: /xyz/openbmc_project/testing/inst1
23    - meta: PATH
24      path: /xyz/openbmc_project/testing/inst2
25    - meta: PATH
26      path: /xyz/openbmc_project/testing/inst3
27    - meta: PATH
28      path: /xyz/openbmc_project/testing/inst4
29
30- name: example property group
31  description: >
32    'Like path groups, a property group is a named collection
33    of DBus property names and associated metadata.
34
35    Properties in a group must all have the same DBus type signature
36    and must be explicitly declared.'
37  class: group
38  group: property
39  type: uint32
40  members:
41    - interface: xyz.openbmc_project.Sensor.Value
42      meta: PROPERTY
43      property: ValueA
44    - interface: xyz.openbmc_project.Sensor.Value
45      meta: PROPERTY
46      property: ValueB
47
48- name: example property watch
49  description: >
50    'A property watch instructs PDM to maintain a cache of the state
51    of the specified properties on the specified DBus objects.
52
53    An optional callback can be triggered when property values change.'
54  class: watch
55  watch: property
56  paths: example path group
57  properties: example property group
58  callback: example count condition
59
60- name: example journal callback
61  description: >
62    'Callbacks are actions PDM should take when instructed to do so.
63
64    Some callback types refer to a group of paths and group of properties
65    in a similar fashion as the property watch directive.
66
67    The journal callback logs the specified message to the systemd journal
68    with the specified severity.
69
70    Additionally, the journal callback will add to the journal key value
71    pair metadata for each property in the specified property group with
72    the key being the property element metadata and the value being the
73    property value.'
74  class: callback
75  callback: journal
76  paths: example path group
77  properties: example property group
78  severity: INFO
79  message: Hello world from PDM!
80
81- name: example method callback
82  description: >
83    'The method callback invokes the specified DBus method.'
84  class: callback
85  callback: method
86  service: org.freedesktop.systemd1
87  path: /org/freedesktop/systemd1
88  interface: org.freedesktop.systemd1.Manager
89  method: StartUnit
90  args:
91    - value: foo.unit
92      type: string
93    - value: replace
94      type: string
95
96- name: example callback group
97  description: >
98    'Callbacks groups are simply named collections of other callbacks.
99    Configuration file directives can only refer to a single callback.
100    Through use of a group, these configuration file directives can
101    refer to more than one callback.
102
103    For example for a given event, one may wish to trace multiple
104    messages to the systemd journal.  The journal callback does not
105    support tracing multiple messages.  To do that, define a callback
106    group composed of multiple journal callbacks.'
107
108  class: callback
109  callback: group
110  members:
111    - example journal callback
112    - example deferred condition
113
114- name: example count condition
115  description: >
116    'Conditions or conditional callbacks apply a test prior to invoking
117    the callback function.
118
119    All conditional callbacks must specify the callback to issue if
120    the condition evaulates.
121
122    The count condition applies the op comparison operator to the value of each
123    property in the specified groups.  It then counts the number of properties
124    that pass the comparison, and applies another comparison on the result
125    against the specified bound.
126
127    For example, a callback that requires at least three temperature sensors
128    in the group to be higher than 115 degrees might use a count condition
129    with an op of >, a count op of >=, a bound of 115, and a countbound of 3.'
130
131  class: condition
132  condition: count
133  paths: example path group
134  properties: example property group
135  callback: example callback group
136  countop: '>='
137  countbound: 3
138  op: '>='
139  bound: 115
140
141- name: example deferred condition
142  description: >
143    'Deferred conditions operate in the same fashion as conditional callbacks
144    with the added behavior that when the condition is tested and is met,
145    invocation of the callback is deferred by the interval specified.
146
147    When the configured time has elapsed, if the condition has not been reevaluated
148    the callback is invoked.
149
150    Any condition type can be deferred in this way by setting the defer attribute.'
151
152  class: condition
153  condition: count
154  paths: example path group
155  properties: example property group
156  defer: 1000us
157  callback: example callback group
158  countop: '>='
159  countbound: 3
160  op: '>='
161  bound: 115
162