summaryrefslogtreecommitdiffstats
path: root/meta-openbmc-machines/meta-openpower
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-machines/meta-openpower')
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml126
1 files changed, 123 insertions, 3 deletions
diff --git a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml
index 1fa153077..d6aef5f55 100644
--- a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml
+++ b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml
@@ -1,11 +1,15 @@
# Witherspoon fan error policy for PDM.
#
-# Create a NotPresent error if fan 0, 1, 2, or 3 is not present for more
-# than 20 seconds. Create a Nonfunctional error if fan 0, 1, 2, or 3 is not
-# functional for any amount of time.
+# * Create a NotPresent error if fan 0, 1, 2, or 3 is not present for more
+# than 20 seconds.
+# * Create a Nonfunctional error if fan 0, 1, 2, or 3 is not
+# functional for any amount of time.
+#
# The system must be powered on in both of these cases.
# If a water cooled system, don't create errors for fan 1.
# Note: An error is created each time the chassis powers on.
+#
+# * Watch for fans to become functional, and then resolve their errors
- name: fan0
class: group
@@ -179,6 +183,42 @@
properties: fan functional
callback: check power fan3 functional
+- name: watch fan0 functional for resolving error logs
+ description: >
+ 'On fan functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan0
+ properties: fan functional
+ callback: resolve fan0 errors if functional
+
+- name: watch fan1 functional for resolving error logs
+ description: >
+ 'On fan functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan1
+ properties: fan functional
+ callback: resolve fan1 errors if functional
+
+- name: watch fan2 functional for resolving error logs
+ description: >
+ 'On fan functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan2
+ properties: fan functional
+ callback: resolve fan2 errors if functional
+
+- name: watch fan3 functional for resolving error logs
+ description: >
+ 'On fan functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan3
+ properties: fan functional
+ callback: resolve fan3 errors if functional
+
- name: check power
description: >
'If the chassis has power, check all fans.'
@@ -539,3 +579,83 @@
value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
type: string
+- name: resolve fan0 errors if functional
+ description: >
+ 'If fan0 is functional, call the resolve fan0 errors callback.'
+ class: condition
+ condition: count
+ paths: fan0
+ properties: fan functional
+ callback: resolve fan0 errors
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: true
+
+#Go ahead and do this on water cooled as well
+- name: resolve fan1 errors if functional
+ description: >
+ 'If fan1 is functional, call the resolve fan1 errors callback.'
+ class: condition
+ condition: count
+ paths: fan1
+ properties: fan functional
+ callback: resolve fan1 errors
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: true
+
+- name: resolve fan2 errors if functional
+ description: >
+ 'If fan2 is functional, call the resolve fan2 errors callback.'
+ class: condition
+ condition: count
+ paths: fan2
+ properties: fan functional
+ callback: resolve fan2 errors
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: true
+
+- name: resolve fan3 errors if functional
+ description: >
+ 'If fan3 is functional, call the resolve fan3 errors callback.'
+ class: condition
+ condition: count
+ paths: fan3
+ properties: fan functional
+ callback: resolve fan3 errors
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: true
+
+- name: resolve fan0 errors
+ class: callback
+ callback: resolve callout
+ paths: fan0
+ properties: fan functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+
+- name: resolve fan1 errors
+ class: callback
+ callback: resolve callout
+ paths: fan1
+ properties: fan functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+
+- name: resolve fan2 errors
+ class: callback
+ callback: resolve callout
+ paths: fan2
+ properties: fan functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+
+- name: resolve fan3 errors
+ class: callback
+ callback: resolve callout
+ paths: fan3
+ properties: fan functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
OpenPOWER on IntegriCloud