| # 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 |