Look for OperationalStatus for the memory Health
When functional is false, health is critical.
When functional is true, health is ok.
Tested: Validator passes.
Set the dimm0 OperationalStatus to false, and see the health:
```
curl -k -H "X-Auth-Token: $token" -X GET https://${bmc}/redfish/v1/Systems/system/Memory/dimm0
{
"Status": {
"Health": "Critical",
"State": "Enabled"
}
}
Change-Id: Ifb7e4b5e6bfadd417122fda66ef3f6590ccc43b1
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
Signed-off-by: George Liu <liuxiwei@ieisystem.com>
diff --git a/redfish-core/lib/memory.hpp b/redfish-core/lib/memory.hpp
index e9ceb7f..59b473d 100644
--- a/redfish-core/lib/memory.hpp
+++ b/redfish-core/lib/memory.hpp
@@ -429,6 +429,7 @@
const std::string* sparePartNumber = nullptr;
const std::string* model = nullptr;
const std::string* locationCode = nullptr;
+ const bool* functional = nullptr;
const bool success = sdbusplus::unpackPropertiesNoThrow(
dbus_utils::UnpackErrorPrinter(), properties, "MemoryDataWidth",
@@ -441,7 +442,7 @@
memoryConfiguredSpeedInMhz, "MemoryType", memoryType, "Channel",
channel, "MemoryController", memoryController, "Slot", slot, "Socket",
socket, "SparePartNumber", sparePartNumber, "Model", model,
- "LocationCode", locationCode);
+ "LocationCode", locationCode, "Functional", functional);
if (!success)
{
@@ -487,6 +488,15 @@
resource::State::Absent;
}
+ if (functional != nullptr)
+ {
+ if (!*functional)
+ {
+ asyncResp->res.jsonValue[jsonPtr]["Status"]["Health"] =
+ resource::Health::Critical;
+ }
+ }
+
if (memoryTotalWidth != nullptr)
{
asyncResp->res.jsonValue[jsonPtr]["BusWidthBits"] = *memoryTotalWidth;