summaryrefslogtreecommitdiff
path: root/meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml
diff options
context:
space:
mode:
authorDave Cobbley <david.j.cobbley@linux.intel.com>2018-08-23 04:40:54 +0300
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2018-08-23 19:39:42 +0300
commit194ff4f1f5d44b12e9cb06ddafa6adb20174a13c (patch)
tree823835cd29daf8901a31ac14c7e6534abf199be3 /meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml
parent4feb727cd6b77a68bdaca63e121b378d814f5eaf (diff)
downloadopenbmc-194ff4f1f5d44b12e9cb06ddafa6adb20174a13c.tar.xz
[Subtree] Bring openbmc machines to top level
The new subtree model brings the subtrees up from the openbmc-machines layer. Change-Id: I58a03ae1be374bc79ae1438e65e888375d12d0c0 Signed-off-by: Dave Cobbley <david.j.cobbley@linux.intel.com> Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml')
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml676
1 files changed, 676 insertions, 0 deletions
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml
new file mode 100644
index 000000000..0c14627d2
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/fans/witherspoon-fan-policy/fan-errors.yaml
@@ -0,0 +1,676 @@
+# 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.
+#
+# 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 both present and functional, and then resolve
+# their errors
+
+- name: fan0
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+
+- name: fan1
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+
+- name: fan2
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+
+- name: fan3
+ class: group
+ group: path
+ members:
+ - meta: FAN
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
+
+- name: chassis state
+ description: >
+ 'Witherspoon has a single chassis to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: CHASSISSTATE
+ path: /xyz/openbmc_project/state/chassis0
+
+- name: chassis
+ description: >
+ 'Witherspoon has a single chassis to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: CHASSIS
+ path: /xyz/openbmc_project/inventory/system/chassis
+
+
+- name: fan present
+ description: >
+ 'Monitor the presence state of each fan.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Inventory.Item
+ meta: PRESENT
+ property: Present
+
+- name: fan functional
+ description: >
+ 'Monitor the functional state of each fan.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.State.Decorator.OperationalStatus
+ meta: FUNCTIONAL
+ property: Functional
+
+- name: fan present and functional
+ description: >
+ 'Monitor the present and functional state of each fan.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Inventory.Item
+ meta: PRESENT
+ property: Present
+ - interface: xyz.openbmc_project.State.Decorator.OperationalStatus
+ meta: FUNCTIONAL
+ property: Functional
+
+- name: chassis powered
+ description: >
+ 'Monitor the chassis power state.'
+ class: group
+ group: property
+ type: string
+ members:
+ - interface: xyz.openbmc_project.State.Chassis
+ meta: CHASSIS_STATE
+ property: CurrentPowerState
+
+- name: chassis air cooled
+ description: >
+ 'The chassis cooling type.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType
+ meta: COOLING_TYPE
+ property: WaterCooled
+
+- name: watch chassis state
+ description: >
+ 'Trigger logic on chassis power state changes.'
+ class: watch
+ watch: property
+ paths: chassis state
+ properties: chassis powered
+ callback: check power
+
+- name: watch fan0 presence
+ description: >
+ 'Trigger logic on fan0 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan0
+ properties: fan present
+ callback: check power fan0 presence
+
+- name: watch fan0 functional
+ description: >
+ 'Trigger logic on fan0 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan0
+ properties: fan functional
+ callback: check power fan0 functional
+
+- name: watch fan1 presence
+ description: >
+ 'Trigger logic on fan1 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan1
+ properties: fan present
+ callback: check power fan1 presence
+
+- name: watch fan1 functional
+ description: >
+ 'Trigger logic on fan1 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan1
+ properties: fan functional
+ callback: check power fan1 functional
+
+- name: watch fan2 presence
+ description: >
+ 'Trigger logic on fan2 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan2
+ properties: fan present
+ callback: check power fan2 presence
+
+- name: watch fan2 functional
+ description: >
+ 'Trigger logic on fan2 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan2
+ properties: fan functional
+ callback: check power fan2 functional
+
+- name: watch fan3 presence
+ description: >
+ 'Trigger logic on fan3 presence state changes.'
+ class: watch
+ watch: property
+ paths: fan3
+ properties: fan present
+ callback: check power fan3 presence
+
+- name: watch fan3 functional
+ description: >
+ 'Trigger logic on fan3 functional state changes.'
+ class: watch
+ watch: property
+ paths: fan3
+ properties: fan functional
+ callback: check power fan3 functional
+
+- name: watch fan0 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan0
+ properties: fan present and functional
+ callback: resolve fan0 errors if present and functional
+
+- name: watch fan1 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan1
+ properties: fan present and functional
+ callback: resolve fan1 errors if present and functional
+
+- name: watch fan2 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan2
+ properties: fan present and functional
+ callback: resolve fan2 errors if present and functional
+
+- name: watch fan3 present and functional for resolving error logs
+ description: >
+ 'On fan present or functional state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: fan3
+ properties: fan present and functional
+ callback: resolve fan3 errors if present and functional
+
+- name: check power
+ description: >
+ 'If the chassis has power, check all fans.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fans
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan0 presence
+ description: >
+ 'If the chassis has power, check presence of fan0.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan0 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan0 functional
+ description: >
+ 'If the chassis has power, check functional of fan0.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan0 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan1 presence
+ description: >
+ 'If the chassis has power, check presence of fan1.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan1 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan1 functional
+ description: >
+ 'If the chassis has power, check functional of fan1.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan1 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan2 presence
+ description: >
+ 'If the chassis has power, check presence of fan2.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan2 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan2 functional
+ description: >
+ 'If the chassis has power, check functional of fan2.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan2 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan3 presence
+ description: >
+ 'If the chassis has power, check presence of fan3.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan3 presence
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power fan3 functional
+ description: >
+ 'If the chassis has power, check functional of fan3.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check fan3 functional
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check fans
+ description: >
+ 'Verify each of the 3 fans are present.'
+ class: callback
+ callback: group
+ members:
+ - check fan0 presence
+ - check fan1 presence
+ - check fan2 presence
+ - check fan3 presence
+ - check fan0 functional
+ - check fan1 functional
+ - check fan2 functional
+ - check fan3 functional
+
+- name: check fan0 presence
+ description: >
+ 'If this condition passes fan0 has been unplugged for more than 20 seconds.'
+ class: condition
+ condition: count
+ paths: fan0
+ properties: fan present
+ defer: 20000000us
+ callback: notpresent fan0 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan0 functional
+ description: >
+ 'If this condition passes fan0 has been marked as nonfunctional.'
+ class: condition
+ condition: count
+ paths: fan0
+ properties: fan functional
+ callback: nonfunctional fan0 error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: check fan1 presence
+ description: >
+ 'If this condition passes fan1 has been unplugged for more than 20 seconds.
+ Fan 1 is not in a water cooled Witherspoon, so check for cooling type
+ before creating an error.'
+ class: condition
+ condition: count
+ paths: fan1
+ properties: fan present
+ defer: 20000000us
+ callback: check cooling type notpresent error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan1 functional
+ description: >
+ 'If this condition passes fan1 has been marked as nonfunctional.
+ Fan 1 is not in a water cooled Witherspoon, so check for cooling type
+ before creating an error.'
+ class: condition
+ condition: count
+ paths: fan1
+ properties: fan functional
+ callback: check cooling type nonfunctional error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: check fan2 presence
+ description: >
+ 'If this condition passes fan2 has been unplugged for more than 20 seconds.'
+ class: condition
+ condition: count
+ paths: fan2
+ properties: fan present
+ defer: 20000000us
+ callback: notpresent fan2 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan2 functional
+ description: >
+ 'If this condition passes fan2 has been marked as nonfunctional.'
+ class: condition
+ condition: count
+ paths: fan2
+ properties: fan functional
+ callback: nonfunctional fan2 error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: check fan3 presence
+ description: >
+ 'If this condition passes fan3 has been unplugged for more than 20 seconds.'
+ class: condition
+ condition: count
+ paths: fan3
+ properties: fan present
+ defer: 20000000us
+ callback: notpresent fan3 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check fan3 functional
+ description: >
+ 'If this condition passes fan3 has been marked as nonfunctional.'
+ class: condition
+ condition: count
+ paths: fan3
+ properties: fan functional
+ callback: nonfunctional fan3 error
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: false
+
+- name: check cooling type nonfunctional error
+ description: >
+ 'If this condition passes the chassis is air cooled and will create a
+ nonfunctional error for fan 1.'
+ class: condition
+ condition: count
+ paths: chassis
+ properties: chassis air cooled
+ callback: nonfunctional fan1 error
+ countop: '=='
+ countbound: 0
+ op: '=='
+ bound: true
+
+- name: check cooling type notpresent error
+ description: >
+ 'If this condition passes the chassis is air cooled and will create a
+ notpresent error for fan 1.'
+ class: condition
+ condition: count
+ paths: chassis
+ properties: chassis air cooled
+ callback: notpresent fan1 error
+ countop: '=='
+ countbound: 0
+ op: '=='
+ bound: true
+
+- name: notpresent fan0 error
+ class: callback
+ callback: elog
+ paths: fan0
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+ type: string
+
+- name: nonfunctional fan0 error
+ class: callback
+ callback: elog
+ paths: fan0
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+ type: string
+
+- name: notpresent fan1 error
+ class: callback
+ callback: elog
+ paths: fan1
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+ type: string
+
+- name: nonfunctional fan1 error
+ class: callback
+ callback: elog
+ paths: fan1
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+ type: string
+
+- name: notpresent fan2 error
+ class: callback
+ callback: elog
+ paths: fan2
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+ type: string
+
+- name: nonfunctional fan2 error
+ class: callback
+ callback: elog
+ paths: fan2
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+ type: string
+
+- name: notpresent fan3 error
+ class: callback
+ callback: elog
+ paths: fan3
+ properties: fan present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
+ type: string
+
+- name: nonfunctional fan3 error
+ class: callback
+ callback: elog
+ paths: fan3
+ properties: fan functional
+ error: xyz::openbmc_project::Inventory::Error::Nonfunctional
+ metadata:
+ - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
+ type: string
+
+- name: resolve fan0 errors if present and functional
+ description: >
+ 'If fan0 is present and functional, call the resolve fan0 errors callback.'
+ class: condition
+ condition: count
+ paths: fan0
+ properties: fan present and functional
+ callback: resolve fan0 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+#Go ahead and do this on water cooled as well
+- name: resolve fan1 errors if present and functional
+ description: >
+ 'If fan1 is present and functional, call the resolve fan1 errors callback.'
+ class: condition
+ condition: count
+ paths: fan1
+ properties: fan present and functional
+ callback: resolve fan1 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+- name: resolve fan2 errors if present and functional
+ description: >
+ 'If fan2 is present and functional, call the resolve fan2 errors callback.'
+ class: condition
+ condition: count
+ paths: fan2
+ properties: fan present and functional
+ callback: resolve fan2 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+- name: resolve fan3 errors if present and functional
+ description: >
+ 'If fan3 is present and functional, call the resolve fan3 errors callback.'
+ class: condition
+ condition: count
+ paths: fan3
+ properties: fan present and functional
+ callback: resolve fan3 errors
+ countop: '=='
+ countbound: 2
+ op: '=='
+ bound: true
+
+- name: resolve fan0 errors
+ class: callback
+ callback: resolve callout
+ paths: fan0
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
+
+- name: resolve fan1 errors
+ class: callback
+ callback: resolve callout
+ paths: fan1
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
+
+- name: resolve fan2 errors
+ class: callback
+ callback: resolve callout
+ paths: fan2
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
+
+- name: resolve fan3 errors
+ class: callback
+ callback: resolve callout
+ paths: fan3
+ properties: fan present and functional
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3