216 lines
5.9 KiB
YAML
216 lines
5.9 KiB
YAML
# Machine 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/motherboard/powersupply0
|
|
|
|
- name: power supply1
|
|
class: group
|
|
group: path
|
|
members:
|
|
- meta: POWER SUPPLY
|
|
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
|
|
|
|
- name: power supplies
|
|
description: >
|
|
'The machine has two power supplies to monitor.'
|
|
class: group
|
|
group: path
|
|
members:
|
|
- meta: POWER SUPPLY
|
|
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
|
|
- meta: POWER SUPPLY
|
|
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
|
|
|
|
- name: chassis state
|
|
description: >
|
|
'The machine 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/motherboard/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/motherboard/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/motherboard/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/motherboard/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
|