summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--redfish-core/lib/power.hpp17
-rw-r--r--redfish-core/lib/sensors.hpp24
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
{
OpenPOWER on IntegriCloud