Chassis: Power: Support get PowerSupply and Voltages
sensors information.
cherry-picked from:
https://github.com/ampere-openbmc/bmcweb/commit/a20f8b17c1efb92b9a8e95e8867d945bc6177804
Sensor module adds sensorType:"power" to retrieve power supply sensor
information.
This applicable to Power schema version 1.2.1
Limit:
- Not retrieve PowerControl information yet.
- Need to get UpperThresholdFatal and LowerThresholdFatal value.
Tested: Browser and redfishtool
Command test: redfishtool -A Basic -S Always --rhost=$bmc_ip -u
$bmc_user -p $bmc_password Chassis -I 1 Power
Redmine ID: #2145.
Change-Id: Ifd4a7495c216f894f46610c02d3e8a8e3988dfaa
Signed-off-by: Tung Vu <tung.vu@amperecomputing.com>
Chassis: Thermal and Power: Correct @odata.id information
cherry-picked from:
https://github.com/ampere-openbmc/bmcweb/commit/ae95b0db60e5e680819c9f9b0c6d61caf66b14cf
Allocate @odata.id of schema in correct way.
Sensor module is general interface not used for specific schema.
Tested: Browser and redfishtool
Command test:
- redfishtool -A Basic -S Always --rhost=$bmc_ip -u $bmc_user -p
$bmc_password Chassis -I 1 Power
- redfishtool -A Basic -S Always --rhost=$bmc_ip -u $bmc_user -p
$bmc_password Chassis -I 1 Thermal
Redmine ID: #2145 & #2146
Change-Id: I265bbb366c323f39fb6d4ac4f7cccfed4382e98d
Signed-off-by: Tung Vu <tung.vu@amperecomputing.com>
Chassis: Correct @odata.id for specific Chassis sub-node.
cherry-picked from:
https://github.com/ampere-openbmc/bmcweb/commit/3eaa53a395ad9275042893413cbefc78f52310e5
Currently there are Thermal and Power sub-nodes of Chassis node, correct
@odata.id information for each sub-node in JSON payload.
Tested: Browser and redfishtool
Command test:
- redfishtool -A Basic -S Always --rhost=$bmc_ip -u $bmc_user -p
$bmc_password Chassis Thermal -I 1
- redfishtool -A Basic -S Always --rhost=$bmc_ip -u $bmc_user -p
$bmc_password Chassis Power -I 1
Change-Id: I2f831ed40926e85c0b6d1cfa7d759eb0b9321daa
Signed-off-by: Tung Vu <tung.vu@amperecomputing.com>
Signed-off-by: Jennifer Lee <jennifer1.lee@intel.com>
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 8b876a5..8b829be 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -47,9 +47,10 @@
{
public:
SensorsAsyncResp(crow::Response& response, const std::string& chassisId,
- const std::initializer_list<const char*> types) :
- res(response),
- chassisId(chassisId), types(types)
+ const std::initializer_list<const char*> types,
+ const std::string& subNode) :
+ chassisId(chassisId),
+ res(response), types(types), chassisSubNode(subNode)
{
res.jsonValue["@odata.id"] =
"/redfish/v1/Chassis/" + chassisId + "/Thermal";
@@ -75,6 +76,7 @@
crow::Response& res;
std::string chassisId{};
const std::vector<const char*> types;
+ std::string chassisSubNode{};
};
/**
@@ -320,6 +322,10 @@
unit = "ReadingVolts";
sensor_json["@odata.type"] = "#Power.v1_0_0.Voltage";
}
+ else if (sensorType == "power")
+ {
+ unit = "LastPowerOutputWatts";
+ }
else
{
BMCWEB_LOG_ERROR << "Redfish cannot map object type for " << sensorName;
@@ -339,6 +345,8 @@
properties.emplace_back("xyz.openbmc_project.Sensor.Threshold.Critical",
"CriticalLow", "LowerThresholdCritical");
+ // TODO Need to get UpperThresholdFatal and LowerThresholdFatal
+
if (sensorType == "temperature")
{
properties.emplace_back("xyz.openbmc_project.Sensor.Value", "MinValue",
@@ -510,8 +518,9 @@
tempArray.push_back(
{{"@odata.id",
"/redfish/v1/Chassis/" +
- SensorsAsyncResp->chassisId +
- "/Thermal#/" + fieldName + "/" +
+ SensorsAsyncResp->chassisId + "/" +
+ SensorsAsyncResp->chassisSubNode +
+ "#/" + fieldName + "/" +
std::to_string(tempArray.size())}});
nlohmann::json& sensorJson = tempArray.back();