# Air cooled Swift fan policy for PDM.
#
# An air 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: >
    'An air 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 air 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 air cooled

- name: check cooling type
  description: >
    'If this condition passes the chassis is air cooled.'
  class: condition
  condition: count
  paths: chassis
  properties: chassis air cooled
  callback: check power
  countop: '=='
  countbound: 0
  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
