# Water cooled Swift fan policy for PDM.
#
# A water cooled Swift requires a minimum of three functional fan
# enclosures. If the number of functional fan enclosures is below three,
# soft poweroff the system.

- name: fan enclosures
  description: >
    'A water cooled Swift has four fan enclosures 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/fan1
    - 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: >
    'Swift has a single chassis to monitor.'
  class: group
  group: path
  members:
    - meta: CHASSISSTATE
      path: /xyz/openbmc_project/state/chassis0

- name: chassis
  description: >
    'Swift 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 enclosure presence state changes.'
  class: watch
  watch: property
  paths: fan enclosures
  properties: fan present
  callback: check cooling type

- name: watch fan functional
  description: >
    'Trigger logic on fan enclosure functional state changes.'
  class: watch
  watch: property
  paths: fan enclosures
  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 three functional fan enclosures,
    power off if not.'
  class: callback
  callback: group
  members:
    - check group presence
    - check group functional enclosures

- 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: fan enclosures
  properties: fan present
  defer: 25000000us
  callback: log and shutdown
  countop: '<'
  countbound: 3
  op: '=='
  bound: true

- name: check group functional enclosures
  description: >
    'If this condition passes more than one fan enclosure 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: fan enclosures
  properties: fan functional
  defer: 5000000us
  callback: log and shutdown
  countop: '>'
  countbound: 1
  op: '=='
  bound: false

- name: log and poweroff
  description: >
    'Immediately poweroff, log an event in the journal, and create an
     error log.'
  class: callback
  callback: group
  members:
    - hard poweroff
    - log hard poweroff
    - create shutdown error

- 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 shutdown
    - create shutdown error

- name: hard poweroff
  description: >
    'Immediately power off the system.'
  class: callback
  callback: method
  service: org.freedesktop.systemd1
  path: /org/freedesktop/systemd1
  interface: org.freedesktop.systemd1.Manager
  method: StartUnit
  args:
    - value: obmc-chassis-hard-poweroff@0.target
      type: string
    - value: replace
      type: string

- 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 hard poweroff
  description: >
    'Log a hard poweroff event to the systemd journal.'
  class: callback
  callback: journal
  paths: chassis state
  properties: chassis powered
  severity: ERR
  message: Immediate poweroff of system. There are not enough functional fans.

- name: log shutdown
  description: >
    'Log a shutdown event to the systemd journal.'
  class: callback
  callback: journal
  paths: chassis state
  properties: chassis powered
  severity: ERR
  message: Request shutdown of 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
