# 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 power
  countop: '=='
  countbound: 1
  op: '=='
  bound: true

- name: check power
  description: >
    'If the chassis has power, check 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 fans
  description: >
    'Verify there are at least two functional fans, power off if not.'
  class: callback
  callback: group
  members:
    - check group presence
    - check group functional

- name: check group 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: log and shutdown
  countop: '<'
  countbound: 2
  op: '=='
  bound: true

- name: check group 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: log and shutdown
  countop: '>'
  countbound: 1
  op: '=='
  bound: false

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

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

- name: create shutdown error
  description: >
    'Create a Fan Shutdown Error log.'
  class: callback
  callback: elog
  paths: chassis state
  properties: chassis powered
  error: xyz::openbmc_project::State::Shutdown::Inventory::Error::Fan
