|  | # 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 set of filters can be applied to the specified properties, | 
|  | where each property's cache is cleared when it fails to pass any one | 
|  | filter. The property's cache is cleared so it will not have an affect on | 
|  | any optional callback that may be triggered. | 
|  |  | 
|  | An optional callback can be triggered when property values change and | 
|  | those values pass all filters that may be defined. | 
|  |  | 
|  | By default the callback is called when the monitor starts. An optional | 
|  | `ignore_start_callback` can be set to true so that the callback will not | 
|  | be called when the monitor starts.' | 
|  |  | 
|  | class: watch | 
|  | watch: property | 
|  | paths: example path group | 
|  | properties: example property group | 
|  | callback: example count condition | 
|  | filters: | 
|  | - op: ">=" | 
|  | bound: 0 | 
|  | - op: "<=" | 
|  | bound: 100 | 
|  | ignore_start_callback: true | 
|  |  | 
|  | - 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 elog 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 elog callback logs the elog and elog metadata.' | 
|  | class: callback | 
|  | callback: elog | 
|  | paths: example path group | 
|  | properties: example property group | 
|  | error: xyz::openbmc_project::Common::Error::InvalidArgument | 
|  | metadata: | 
|  | - name: xyz::openbmc_project::Common::InvalidArgument::ARGUMENT_NAME | 
|  | value: testing... | 
|  | type: string | 
|  | - name: xyz::openbmc_project::Common::InvalidArgument::ARGUMENT_VALUE | 
|  | value: testing... | 
|  | type: string | 
|  |  | 
|  | - name: example elog with metadata capture callback | 
|  | description: > | 
|  | 'Callbacks are actions pdm should take when instructed to do so. | 
|  |  | 
|  | This callback creates an elog, and it will capture the values of the | 
|  | properties that passed its condition check in the metadata field (that | 
|  | must be a string type) in the form: | 
|  |  | 
|  | |path1:property1=value1|path2:property2=value2| | 
|  |  | 
|  | Note that as this callback depends on the condition that called it to fill | 
|  | in the result of its checks on each property, this callback should use the | 
|  | same properties and paths keywords as the condition that calls it. | 
|  |  | 
|  | Currently an error log with only 1 metadata entry of type string is | 
|  | supported.' | 
|  |  | 
|  | class: callback | 
|  | callback: elog_with_metadata | 
|  | paths: example path group | 
|  | properties: example property group | 
|  | error: xyz::openbmc_project::Common::Callout::Error::Inventory | 
|  | metadata: xyz::openbmc_project::Common::Callout::Inventory::CALLOUT_INVENTORY_PATH | 
|  |  | 
|  | - name: example event 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 event callback creates the event D-Bus object with the given name and | 
|  | the event message. eg /xyz/openbmc_project/events/test/<id>' | 
|  | class: callback | 
|  | callback: event | 
|  | paths: example path group | 
|  | properties: example property group | 
|  | eventName: test | 
|  | eventMessage: "Test configuration changed." | 
|  |  | 
|  | - 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 resolve callouts callback | 
|  | description: > | 
|  | 'The resolve callout callback resolves all error log entries that are | 
|  | associated with the inventory path specified by setting the Resolved | 
|  | property in the entries to true. | 
|  |  | 
|  | A use case could be to watch the Present property on the inventory item | 
|  | and resolve all errors for it when a new one is plugged in and the | 
|  | property changes to true.' | 
|  |  | 
|  | class: callback | 
|  | callback: resolve callout | 
|  | paths: example path group | 
|  | properties: example property group | 
|  | callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 | 
|  |  | 
|  | - 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 | 
|  | - example elog callback | 
|  |  | 
|  | - 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. | 
|  |  | 
|  | The optional oneshot parameter defaults to false.  If it is specified and | 
|  | set to true, then the callback will only be called once for as long as the | 
|  | condition is repeatedly passing.  The condition needs to fail at least | 
|  | once to rearm the callback.' | 
|  |  | 
|  | class: condition | 
|  | condition: count | 
|  | paths: example path group | 
|  | properties: example property group | 
|  | callback: example callback group | 
|  | countop: ">=" | 
|  | countbound: 3 | 
|  | op: ">=" | 
|  | bound: 115 | 
|  | oneshot: true | 
|  |  | 
|  | - 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 | 
|  |  | 
|  | - name: errorlog path group | 
|  | class: group | 
|  | group: path | 
|  | members: | 
|  | - meta: PATH | 
|  | path: /xyz/openbmc_project/logging | 
|  |  | 
|  | - name: pathwatch errorlog | 
|  | description: > | 
|  | 'A pathwatch watches on the specified object path group. pathcallback are | 
|  | actions PDM should take when instructed to do so.' | 
|  |  | 
|  | class: pathwatch | 
|  | pathwatch: path | 
|  | paths: errorlog path group | 
|  | pathcallback: create errorlog event | 
|  |  | 
|  | - name: create errorlog event | 
|  | description: > | 
|  | 'eventType specifies the type of the SNMP notification.' | 
|  | class: pathcallback | 
|  | pathcallback: eventpath | 
|  | paths: errorlog path group | 
|  | eventType: ErrorTrap |