ibm-openbmc / dev

Product Development Project Mgmt and Tracking
16 stars 2 forks source link

eBMC LED Management :: Health and HealthRollup support #2411

Open vishwabmc opened 4 years ago

vishwabmc commented 4 years ago

Initially, redfish had Indicator LED property with enum Attention/Identify/Off. However, going forward, that would not be the case. The idea is to use "HealthRollUp" property of a FRU to indicate a fault on thh FRU.

What is needed:

when a client wants to read HealthRollUp, bmcweb will check if there is any association to led object for that FRU and if so, it reads the asserted state of the group and then populates the Rollup property

For example: each FRU instance will have "fault_led" and "identify_led".

Sequence of events: 1/. User reads HealthRollUp of a resource

2/. bmcweb checks if there is any led association object created for that Inventory Example:

Example output: "/xyz/openbmc_project/led/groups/dimm10_fault"

3/. If there is an association existing, then read the "asserted" state.

4/. Use the result from above step ^ and then set "HealthRollup" is "Critical" if it's "true"

lxwinspur commented 4 years ago

changed fault_led to fault_led_group changed identify_led to identify_led_group

lxwinspur commented 4 years ago

https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/35541

vishwabmc commented 3 years ago

After discussing this with Ed 'et al, I believe the better solution is not to derive health-rollup from the state of Fault_Led.

Instead, do 2 things as part of setting the fault LED.

Using this approach :

vishwabmc commented 3 years ago

Closing this...

vishwabmc commented 3 years ago

Reopening this since we need to implement Health and HealthRollup for all the resources.. Currently, it's there only for CPU and DIMM.

Today, the Health field is populated like this :

We need to implement the HealthRollup also.. We believe, the existing HealthRollup on [Chassis] is good enough for the GA. Here is how we see it works :

This github will be a epic and we can have sub tasks inside this to have health implemented on all the resources.. we have many new schemas introduced..

gtmills commented 3 years ago

For HealthRollup: Logging is creating the associations for us here: https://github.com/openbmc/phosphor-logging/blob/76198a2ea2e3deb14078e0d3dd3932b657ddd9b8/extensions/openpower-pels/service_indicators.cpp#L83

The only healthrollup we really care about is Chassis, at least for now. @santoshpuranik's app will implement the item.global interface.

For Health: We need all resources to use OperationalStatus. Need to modify https://github.com/openbmc/bmcweb/blob/master/redfish-core/lib/health.hpp#L44 (either removing Health from it or have it set the health)

Any changes for this can be downstream only.