1# Example PDM configuration file. 2 3- name: example path group 4 description: > 5 'A path group is a named collection of D-Bus 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 D-Bus property names and associated metadata. 34 35 Properties in a group must all have the same D-Bus 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 D-Bus objects. 52 53 An optional set of filters can be applied to the specified properties, 54 where each property's cache is cleared when it fails to pass 55 any one filter. The property's cache is cleared so it will not have an 56 affect on any optional callback that may be triggered. 57 58 An optional callback can be triggered when property values change and 59 those values pass all filters that may be defined. 60 61 By default the callback is called when the monitor starts. 62 An optional `ignore_start_callback` can be set to true so that the 63 callback will not be called when the monitor starts.' 64 65 class: watch 66 watch: property 67 paths: example path group 68 properties: example property group 69 callback: example count condition 70 filters: 71 - op: '>=' 72 bound: 0 73 - op: '<=' 74 bound: 100 75 ignore_start_callback: true 76 77- name: example journal callback 78 description: > 79 'Callbacks are actions PDM should take when instructed to do so. 80 81 Some callback types refer to a group of paths and group of properties 82 in a similar fashion as the property watch directive. 83 84 The journal callback logs the specified message to the systemd journal 85 with the specified severity. 86 87 Additionally, the journal callback will add to the journal key value 88 pair metadata for each property in the specified property group with 89 the key being the property element metadata and the value being the 90 property value.' 91 class: callback 92 callback: journal 93 paths: example path group 94 properties: example property group 95 severity: INFO 96 message: Hello world from PDM! 97 98- name: example elog callback 99 description: > 100 'Callbacks are actions PDM should take when instructed to do so. 101 102 Some callback types refer to a group of paths and group of properties 103 in a similar fashion as the property watch directive. 104 105 The elog callback logs the elog and elog metadata.' 106 class: callback 107 callback: elog 108 paths: example path group 109 properties: example property group 110 error: xyz::openbmc_project::Common::Error::InvalidArgument 111 metadata: 112 - name: xyz::openbmc_project::Common::InvalidArgument::ARGUMENT_NAME 113 value: testing... 114 type: string 115 - name: xyz::openbmc_project::Common::InvalidArgument::ARGUMENT_VALUE 116 value: testing... 117 type: string 118 119- name: example elog with metadata capture callback 120 description: > 121 'Callbacks are actions pdm should take when instructed to do so. 122 123 This callback creates an elog, and it will capture the values of the 124 properties that passed its condition check in the metadata field 125 (that must be a string type) in the form: 126 127 |path1:property1=value1|path2:property2=value2| 128 129 Note that as this callback depends on the condition that called it to 130 fill in the result of its checks on each property, this callback should 131 use the same properties and paths keywords as the condition that calls it. 132 133 Currently an error log with only 1 metadata entry of type string is 134 supported.' 135 136 class: callback 137 callback: elog_with_metadata 138 paths: example path group 139 properties: example property group 140 error: xyz::openbmc_project::Common::Callout::Error::Inventory 141 metadata: xyz::openbmc_project::Common::Callout::Inventory::CALLOUT_INVENTORY_PATH 142 143- name: example event callback 144 description: > 145 'Callbacks are actions PDM should take when instructed to do so. 146 147 Some callback types refer to a group of paths and group of properties 148 in a similar fashion as the property watch directive. 149 150 The event callback creates the event D-Bus object with the given name 151 and the event message. 152 eg /xyz/openbmc_project/events/test/<id>' 153 class: callback 154 callback: event 155 paths: example path group 156 properties: example property group 157 eventName: test 158 eventMessage: "Test configuration changed." 159 160- name: example method callback 161 description: > 162 'The method callback invokes the specified D-Bus method.' 163 class: callback 164 callback: method 165 service: org.freedesktop.systemd1 166 path: /org/freedesktop/systemd1 167 interface: org.freedesktop.systemd1.Manager 168 method: StartUnit 169 args: 170 - value: foo.unit 171 type: string 172 - value: replace 173 type: string 174 175- name: example resolve callouts callback 176 description: > 177 'The resolve callout callback resolves all error log entries that 178 are associated with the inventory path specified by setting the 179 Resolved property in the entries to true. 180 181 A use case could be to watch the Present property on the inventory 182 item and resolve all errors for it when a new one is plugged in and 183 the property changes to true.' 184 185 class: callback 186 callback: resolve callout 187 paths: example path group 188 properties: example property group 189 callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 190 191- name: example callback group 192 description: > 193 'Callbacks groups are simply named collections of other callbacks. 194 Configuration file directives can only refer to a single callback. 195 Through use of a group, these configuration file directives can 196 refer to more than one callback. 197 198 For example for a given event, one may wish to trace multiple 199 messages to the systemd journal. The journal callback does not 200 support tracing multiple messages. To do that, define a callback 201 group composed of multiple journal callbacks.' 202 203 class: callback 204 callback: group 205 members: 206 - example journal callback 207 - example deferred condition 208 - example elog callback 209 210- name: example count condition 211 description: > 212 'Conditions or conditional callbacks apply a test prior to invoking 213 the callback function. 214 215 All conditional callbacks must specify the callback to issue if 216 the condition evaluates. 217 218 The count condition applies the op comparison operator to the value of each 219 property in the specified groups. It then counts the number of properties 220 that pass the comparison, and applies another comparison on the result 221 against the specified bound. 222 223 For example, a callback that requires at least three temperature sensors 224 in the group to be higher than 115 degrees might use a count condition 225 with an op of >, a count op of >=, a bound of 115, and a countbound of 3. 226 227 The optional oneshot parameter defaults to false. If it is specified and 228 set to true, then the callback will only be called once for as long as the 229 condition is repeatedly passing. The condition needs to fail at least 230 once to rearm the callback.' 231 232 class: condition 233 condition: count 234 paths: example path group 235 properties: example property group 236 callback: example callback group 237 countop: '>=' 238 countbound: 3 239 op: '>=' 240 bound: 115 241 oneshot: true 242 243- name: example deferred condition 244 description: > 245 'Deferred conditions operate in the same fashion as conditional callbacks 246 with the added behavior that when the condition is tested and is met, 247 invocation of the callback is deferred by the interval specified. 248 249 When the configured time has elapsed, if the condition has not been reevaluated 250 the callback is invoked. 251 252 Any condition type can be deferred in this way by setting the defer attribute.' 253 254 class: condition 255 condition: count 256 paths: example path group 257 properties: example property group 258 defer: 1000us 259 callback: example callback group 260 countop: '>=' 261 countbound: 3 262 op: '>=' 263 bound: 115 264 265- name: errorlog path group 266 class: group 267 group: path 268 members: 269 - meta: PATH 270 path: /xyz/openbmc_project/logging 271 272- name: pathwatch errorlog 273 description: > 274 'A pathwatch watches on the specified object path goup. 275 pathcallback are actions PDM should take when instructed to do so.' 276 277 class: pathwatch 278 pathwatch: path 279 paths: errorlog path group 280 pathcallback: create errorlog event 281 282- name: create errorlog event 283 description: > 284 'eventType specifies the type of the SNMP notification.' 285 class: pathcallback 286 pathcallback: eventpath 287 paths: errorlog path group 288 eventType: ErrorTrap 289