presence: Create ErrorReporter class
This class will, eventually, create event logs for missing fans.
This first commit will just create a stubbed out class if there is a
'reporting' section in the configuration JSON. From the JSON, the class
will pull out the value for the number of seconds to wait between first
detecting a fan is missing and creating the event log for it.
This requires a slight change to the existing JSON format, however the
JsonConfig class was updated to support both the old and new formats.
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I991ea7cf0457448411e65f4c8e274bb2584d15f4
diff --git a/presence/example/example.json b/presence/example/example.json
index 6d77c81..25c77cc 100644
--- a/presence/example/example.json
+++ b/presence/example/example.json
@@ -1,72 +1,81 @@
-[
- {
- "name": "Example Fan0",
- "description": "'Example fan with tach feedback detection method. Fans without any special presence detection hardware can use one or more tach speed sensor feedbacks as an indicator of presence. Listed sensors are expected to be found in the /xyz/openbmc_project/sensors/fan_tach namespace as required by the OpenBMC DBus API. Supported policy types are fallback or anyof.'",
- "path": "/system/chassis/motherboard/fan0",
- "methods": [
- {
- "type": "tach",
- "sensors": [
- "fan0"
+{
+ "fans":
+ [
+ {
+ "name": "Example Fan0",
+ "description": "'Example fan with tach feedback detection method. Fans without any special presence detection hardware can use one or more tach speed sensor feedbacks as an indicator of presence. Listed sensors are expected to be found in the /xyz/openbmc_project/sensors/fan_tach namespace as required by the OpenBMC DBus API. Supported policy types are fallback or anyof.'",
+ "path": "/system/chassis/motherboard/fan0",
+ "methods": [
+ {
+ "type": "tach",
+ "sensors": [
+ "fan0"
+ ]
+ }
]
- }
- ]
- },
- {
- "name": "Example Fan1",
- "description": "'Example fan with gpio detection method. Fans with dedicated gpios can use the gpio detection method. The gpio detection uses Linux gpio-keys: the event number must be provided via the key property.'",
- "path": "/system/chassis/motherboard/fan1",
- "methods": [
- {
- "type": "gpio",
- "key": 123,
- "physpath": "/sys/devices/foo/bar",
- "devpath": "/dev/input/by-path/platform-gpio-keys-event"
- }
- ]
- },
- {
- "name": "Example Fan2",
- "description": "'Example fan with fallback redundancy policy. Multiple detection methods for a single fan are allowed. When multiple detection methods are provided a redundancy algorithm must be specified with the rpolicy attribute. Note that the redundancy policy algorithm may or may not factor the order the detection methods are listed into its logic. The fallback algorithm falls back to subsequently listed detection methods when the first method does not detect a fan and the second method does.'",
- "path": "/system/chassis/motherboard/fan2",
- "methods": [
- {
- "type": "gpio",
- "key": 124,
- "physpath": "/sys/devices/foo/bar",
- "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
- },
- {
- "type": "tach",
- "sensors": [
- "fan2"
+ },
+ {
+ "name": "Example Fan1",
+ "description": "'Example fan with gpio detection method. Fans with dedicated gpios can use the gpio detection method. The gpio detection uses Linux gpio-keys: the event number must be provided via the key property.'",
+ "path": "/system/chassis/motherboard/fan1",
+ "methods": [
+ {
+ "type": "gpio",
+ "key": 123,
+ "physpath": "/sys/devices/foo/bar",
+ "devpath": "/dev/input/by-path/platform-gpio-keys-event"
+ }
]
- }
- ],
- "rpolicy": {
- "type": "fallback"
- }
- },
- {
- "name": "Example Fan3",
- "description": "'Example fan with anyof redundancy policy. The anyof algorithm reports true if any redundancy set component sensors report true.'",
- "path": "/system/chassis/motherboard/fan3",
- "methods": [
- {
- "type": "gpio",
- "key": 125,
- "physpath": "/sys/devices/foo/bar",
- "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
- },
- {
- "type": "tach",
- "sensors": [
- "fan3"
- ]
- }
- ],
- "rpolicy": {
- "type": "anyof"
- }
- }
-]
+ },
+ {
+ "name": "Example Fan2",
+ "description": "'Example fan with fallback redundancy policy. Multiple detection methods for a single fan are allowed. When multiple detection methods are provided a redundancy algorithm must be specified with the rpolicy attribute. Note that the redundancy policy algorithm may or may not factor the order the detection methods are listed into its logic. The fallback algorithm falls back to subsequently listed detection methods when the first method does not detect a fan and the second method does.'",
+ "path": "/system/chassis/motherboard/fan2",
+ "methods": [
+ {
+ "type": "gpio",
+ "key": 124,
+ "physpath": "/sys/devices/foo/bar",
+ "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
+ },
+ {
+ "type": "tach",
+ "sensors": [
+ "fan2"
+ ]
+ }
+ ],
+ "rpolicy": {
+ "type": "fallback"
+ }
+ },
+ {
+ "name": "Example Fan3",
+ "description": "'Example fan with anyof redundancy policy. The anyof algorithm reports true if any redundancy set component sensors report true.'",
+ "path": "/system/chassis/motherboard/fan3",
+ "methods": [
+ {
+ "type": "gpio",
+ "key": 125,
+ "physpath": "/sys/devices/foo/bar",
+ "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
+ },
+ {
+ "type": "tach",
+ "sensors": [
+ "fan3"
+ ]
+ }
+ ],
+ "rpolicy": {
+ "type": "anyof"
+ }
+ }
+ ],
+
+ "reporting":
+ {
+ "description": "'The amount of time, in seconds, that a fan must be missing before an event log is created.'",
+ "fan_missing_error_time": 10
+ }
+}