diff options
| -rw-r--r-- | redfish-core/lib/power.hpp | 17 | ||||
| -rw-r--r-- | redfish-core/lib/sensors.hpp | 24 |
2 files changed, 35 insertions, 6 deletions
diff --git a/redfish-core/lib/power.hpp b/redfish-core/lib/power.hpp index e6f1eba..8c3927b 100644 --- a/redfish-core/lib/power.hpp +++ b/redfish-core/lib/power.hpp @@ -124,11 +124,21 @@ class Power : public Node } nlohmann::json& tempArray = - sensorAsyncResp->res.jsonValue["PowerLimit"]; + sensorAsyncResp->res.jsonValue["PowerControl"]; + // Put multiple "sensors" into a single PowerControl, 0, so + // only create the first one if (tempArray.empty()) { - tempArray.push_back({}); + // Mandatory properties odata.id and MemberId + // A warning without a odata.type + tempArray.push_back( + {{"@odata.type", "#Power.v1_0_0.PowerControl"}, + {"@odata.id", "/redfish/v1/Chassis/" + + sensorAsyncResp->chassisId + + "/Power#/PowerControl/0"}, + {"Name", "Chassis Power Control"}, + {"MemberId", "0"}}); } nlohmann::json& sensorJson = tempArray.back(); @@ -188,7 +198,8 @@ class Power : public Node } } - nlohmann::json& value = sensorJson["LimitInWatts"]; + nlohmann::json& value = + sensorJson["PowerLimit"]["LimitInWatts"]; if (enabled) { diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp index 7980ba2..0ed47f7 100644 --- a/redfish-core/lib/sensors.hpp +++ b/redfish-core/lib/sensors.hpp @@ -568,6 +568,11 @@ void objectInterfacesToJson( if (!sensorName.compare("total_power")) { + sensor_json["@odata.type"] = "#Power.v1_0_0.PowerControl"; + // Put multiple "sensors" into a single PowerControl, so have + // generic names for MemberId and Name. Follows Redfish mockup. + sensor_json["MemberId"] = "0"; + sensor_json["Name"] = "Chassis Power Control"; unit = "PowerConsumedWatts"; } else if (sensorNameLower.find("input") != std::string::npos) @@ -1493,10 +1498,23 @@ void getSensorData( nlohmann::json& tempArray = SensorsAsyncResp->res.jsonValue[fieldName]; - if (fieldName == "PowerSupplies" && !tempArray.empty()) + if ((fieldName == "PowerSupplies" || + fieldName == "PowerControl") && + !tempArray.empty()) { - // Power supplies put multiple "sensors" into a single power - // supply entry, so only create the first one + // For power supplies and power control put multiple + // "sensors" into a single power supply or power control + // entry, so only create the first one + } + else if (fieldName == "PowerControl") + { + // Put multiple "sensors" into a single PowerControl. + // Follows MemberId naming and naming in power.hpp. + tempArray.push_back( + {{"@odata.id", "/redfish/v1/Chassis/" + + SensorsAsyncResp->chassisId + "/" + + SensorsAsyncResp->chassisSubNode + + "#/" + fieldName + "/0"}}); } else { |

