Open vishwabmc opened 4 years ago
changed fault_led
to fault_led_group
changed identify_led
to identify_led_group
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 :
Closing this...
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 :
xyz.openbmc_project.State.Decorator.OperationalStatus
implemented with Property Functional
false
to indicate it's faulted.false
, then Health is set to Critical
..true
, then Health is set to OK
.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 :
xyz.openbmc_project.Inventory.Item.Global
is implemented.critical
HealthRollup
to [Critical]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..
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.
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"