# Water cooled Witherspoon fan policy for PDM.
#
# A water cooled Witherspoon requires a minimum of two functional fans.
# If the number of functional fans drops below that
# power the system off.

- name: fans
  description: >
    'A water cooled Witherspoon has three fans to monitor.'
  class: group
  group: path
  members:
    - meta: FAN
      path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
    - meta: FAN
      path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
    - 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: 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 water cooled
  description: >
    'Monitor 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 fan present
  description: >
    'Trigger logic on fan presence state changes.'
  class: watch
  watch: property
  paths: fans
  properties: fan present
  callback: check cooling type

- name: watch fan functional
  description: >
    'Trigger logic on fan functional state changes.'
  class: watch
  watch: property
  paths: fans
  properties: fan functional
  callback: check cooling type

- name: watch chassis state
  description: >
    'Trigger logic on chassis power state changes.'
  class: watch
  watch: property
  paths: chassis state
  properties: chassis powered
  callback: check cooling type

- name: watch cooling type
  description: >
    'Maintain a cache of the chassis cooling type.'
  class: watch
  watch: property
  paths: chassis
  properties: chassis water cooled

- name: check cooling type
  description: >
    'If this condition passes the chassis is water cooled.'
  class: condition
  condition: count
  paths: chassis
  properties: chassis water cooled
  callback: check fans
  countop: '=='
  countbound: 1
  op: '=='
  bound: true

- name: check fans
  description: >
    'Verify there are at least two functional fans.'
  class: callback
  callback: group
  members:
    - check presence
    - check functional

- name: check presence
  description: >
    'If this condition passes more than one fan has been unplugged
    for more than 25 seconds.  Shut the system down.  Count present
    fans rather than non-present fans since the latter would pass
    if the fan 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 fan inventory object implementation.'
  class: condition
  condition: count
  paths: fans
  properties: fan present
  defer: 25000000us
  callback: check power
  countop: '<'
  countbound: 2
  op: '=='
  bound: true

- name: check functional
  description: >
    'If this condition passes more than one fan in the group has been marked
    as nonfunctional for five seconds. Shut the system down.

    For a more detailed definition of nonfunctional, consult the documentation
    of xyz.openbmc_project.State.Decorator.OperationalStatus and/or the
    documentation of the fan inventory object implementation.'
  class: condition
  condition: count
  paths: fans
  properties: fan functional
  defer: 5000000us
  callback: check power
  countop: '>'
  countbound: 1
  op: '=='
  bound: false

- name: check power
  description: >
    'If the chassis has power, power it off.'
  class: condition
  condition: count
  paths: chassis state
  properties: chassis powered
  callback: log and shutdown
  countop: '>'
  countbound: 0
  op: '=='
  bound: xyz.openbmc_project.State.Chassis.PowerState.On

- name: log and shutdown
  description: >
    'Shut the system down and log an event.'
  class: callback
  callback: group
  members:
    - shutdown
    - log

- name: shutdown
  description: >
    'Shut down the system.'
  class: callback
  callback: method
  service: org.freedesktop.systemd1
  path: /org/freedesktop/systemd1
  interface: org.freedesktop.systemd1.Manager
  method: StartUnit
  args:
    - value: obmc-host-shutdown@0.target
      type: string
    - value: replace
      type: string

- name: log
  description: >
    'Log a shutdown event to the systemd journal.'
  class: callback
  callback: journal
  paths: chassis state
  properties: chassis powered
  severity: ERR
  message: Shutting down system.  There are not enough functional fans.
