blob: a97f4b8989dee8c1eb0d6e3b43a2247e97dfa0ee [file] [log] [blame]
# Witherspoon power supply policy for PDM.
#
# Create an error if a power supply is removed while the system is powered on
- name: power supply0
class: group
group: path
members:
- meta: POWER SUPPLY
path: /xyz/openbmc_project/inventory/system/chassis/powersupply0
- name: power supply1
class: group
group: path
members:
- meta: POWER SUPPLY
path: /xyz/openbmc_project/inventory/system/chassis/powersupply1
- name: power supplies
description: >
'A Witherspoon has two power supplies to monitor.'
class: group
group: path
members:
- meta: POWER SUPPLY
path: /xyz/openbmc_project/inventory/system/chassis/powersupply0
- meta: POWER SUPPLY
path: /xyz/openbmc_project/inventory/system/chassis/powersupply1
- name: chassis state
description: >
'A Witherspoon has a single chassis to monitor.'
class: group
group: path
members:
- meta: CHASSISSTATE
path: /xyz/openbmc_project/state/chassis0
- name: power supply present
description: >
'Monitor the presence state of each power supply.'
class: group
group: property
type: boolean
members:
- interface: xyz.openbmc_project.Inventory.Item
meta: PRESENT
property: Present
- 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: watch power supply present
description: >
'Trigger logic on power supply presence state changes.'
class: watch
watch: property
paths: power supplies
properties: power supply present
callback: check power
- 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: check power
description: >
'If the chassis has power, check for power supplies.'
class: condition
condition: count
paths: chassis state
properties: chassis powered
callback: check power supplies
countop: '>'
countbound: 0
op: '=='
bound: xyz.openbmc_project.State.Chassis.PowerState.On
- name: check power supplies
description: >
'Create an error if a power supply is not present.'
class: callback
callback: group
members:
- check power supply0 presence
- check power supply1 presence
- name: check power supply0 presence
description: >
'If this condition passes power supply0 has been unplugged for more than
5 seconds. Count present power supplies rather than non-present
power supplies since the latter would pass if the power supply has not
been created for some reason.
For a more detailed definition of unplugged, consult the documentation
of xyz.openbmc_project.Inventory.Item and/or the documentation
of the power supply inventory object implementation.'
class: condition
condition: count
paths: power supply0
properties: power supply present
defer: 5000000us
callback: notpresent power supply0 error
countop: '<'
countbound: 1
op: '=='
bound: true
- name: check power supply1 presence
description: >
'If this condition passes power supply1 has been unplugged for more than
5 seconds.'
class: condition
condition: count
paths: power supply1
properties: power supply present
defer: 5000000us
callback: notpresent power supply1 error
countop: '<'
countbound: 1
op: '=='
bound: true
- name: notpresent power supply0 error
class: callback
callback: elog
paths: power supply0
properties: power supply 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/powersupply0
type: string
- name: notpresent power supply1 error
class: callback
callback: elog
paths: power supply1
properties: power supply 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/powersupply1
type: string
- name: resolve power supply0 errors if present
description: >
'If power supply0 is present, call the resolve ps0 errors callback.'
class: condition
condition: count
paths: power supply0
properties: power supply present
callback: resolve power supply0 errors
countop: '>'
countbound: 0
op: '=='
bound: true
- name: resolve power supply1 errors if present
description: >
'If power supply1 is present, call the resolve ps1 errors callback.'
class: condition
condition: count
paths: power supply1
properties: power supply present
callback: resolve power supply1 errors
countop: '>'
countbound: 0
op: '=='
bound: true
- name: resolve power supply0 errors
class: callback
callback: resolve callout
paths: power supply0
properties: power supply present
callout: /xyz/openbmc_project/inventory/system/chassis/powersupply0
- name: resolve power supply1 errors
class: callback
callback: resolve callout
paths: power supply1
properties: power supply present
callout: /xyz/openbmc_project/inventory/system/chassis/powersupply1
- name: watch power supply0 present for resolving error logs
description: >
'On supply present state changes, check if errors need to be resolved.'
class: watch
watch: property
paths: power supply0
properties: power supply present
callback: resolve power supply0 errors if present
- name: watch power supply1 present for resolving error logs
description: >
'On supply present state changes, check if errors need to be resolved.'
class: watch
watch: property
paths: power supply1
properties: power supply present
callback: resolve power supply1 errors if present