diff options
author | Myung Bae <myungbae@us.ibm.com> | 2023-05-31 23:10:01 +0300 |
---|---|---|
committer | Ed Tanous <ed@tanous.net> | 2023-06-01 00:09:39 +0300 |
commit | aec0ec30d74ade5c791ec792ff9568bb8c1d8a3a (patch) | |
tree | 23e8ae0b9a9c680eb4ac6164ffe04e9b67726c81 | |
parent | 5fd0aafb0f14fb3011970e8575647bb608688c7c (diff) | |
download | bmcweb-aec0ec30d74ade5c791ec792ff9568bb8c1d8a3a.tar.xz |
Fix NotFound Sensors to report as 404
Sensors that are not found are incorrectly reported as internal Server error
and its logging is done as Error.
.
It will be changed to 404 - Not found and its logging will be WARNING.
```
redfishtool raw GET -r ${bmc} -u admin -p 0penBmc0 -S Always /redfish/v1/Chassis/chassis/Sensors/temperature_PCIE_1_Temp_invalid
redfishtool: Transport: Response Error: status_code: 500 -- Internal Server Error
redfishtool: raw: Error getting response
curl -k -X GET https://${bmc}/redfish/v1/Chassis/chassis/Sensors/temperature_PCIE_1_Temp_invalid
{
"@odata.id": "/redfish/v1/Chassis/chassis/Sensors/temperature_PCIE_1_Temp_invalid",
"error": {
"@Message.ExtendedInfo": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The request failed due to an internal service error. The service is still operational.",
"MessageArgs": [],
"MessageId": "Base.1.13.0.InternalError",
"MessageSeverity": "Critical",
"Resolution": "Resubmit the request. If the problem persists, consider resetting the service."
}
],
"code": "Base.1.13.0.InternalError",
"message": "The request failed due to an internal service error. The service is still operational."
}
}%
```
Its logging is
```
redfishtool: Transport: Response Error: status_code: 500 -- Internal Server Error(2023-05-31 15:16:43) [CRITICAL "error_messages.cpp":282] Internal Error ../../../../../../../../../bmcweb/redfish-core/lib/sensors.hpp(2928:36) `redfish::sensors::handleSensorGet(App&, const crow::Request&, const std::shared_ptr<bmcweb::AsyncResp>&, const std::string&, const std::string&)::<lambda(const boost::system::error_code&, const dbus::utility::MapperGetObject&)>`:
(2023-05-31 15:16:43) [ERROR "sensors.hpp":2929] Sensor getSensorPaths resp_handler: Dbus error generic:5
```
The expected behavior will be
```
redfishtool raw GET -r ${bmc} -u admin -p 0penBmc0 -S Always /redfish/v1/Chassis/chassis/Sensors/temperature_PCIE_1_Temp_invalid
redfishtool: Transport: Response Error: status_code: 404 -- Not Found
curl -k -X GET https://${bmc}/redfish/v1/Chassis/chassis/Sensors/temperature_PCIE_1_Temp_invalid
{
"@odata.id": "/redfish/v1/Chassis/chassis/Sensors/temperature_PCIE_1_Temp_invalid",
"error": {
"@Message.ExtendedInfo": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The requested resource of type temperature_PCIE_1_Temp_invalid named 'Sensor' was not found.",
"MessageArgs": [
"temperature_PCIE_1_Temp_invalid",
"Sensor"
],
"MessageId": "Base.1.13.0.ResourceNotFound",
"MessageSeverity": "Critical",
"Resolution": "Provide a valid resource identifier and resubmit the request."
}
],
"code": "Base.1.13.0.ResourceNotFound",
"message": "The requested resource of type temperature_PCIE_1_Temp_invalid named 'Sensor' was not found."
}
}%
```
Its logging will be:
```
(2023-05-31 20:17:55) [WARNING "sensors.hpp":2928] Sensor not found from getSensorPaths
```
Change-Id: I5a51c1b5c0125b5396068311602964d4e249e297
Signed-off-by: Myung Bae <myungbae@us.ibm.com>
-rw-r--r-- | redfish-core/lib/sensors.hpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp index 930eb52f5c..3b212c2aea 100644 --- a/redfish-core/lib/sensors.hpp +++ b/redfish-core/lib/sensors.hpp @@ -2919,14 +2919,20 @@ inline void handleSensorGet(App& app, const crow::Request& req, // and get the path and service name associated with the sensor ::dbus::utility::getDbusObject( sensorPath, interfaces, - [asyncResp, + [asyncResp, sensorId, sensorPath](const boost::system::error_code& ec, const ::dbus::utility::MapperGetObject& subtree) { BMCWEB_LOG_DEBUG << "respHandler1 enter"; + if (ec == boost::system::errc::io_error) + { + BMCWEB_LOG_WARNING << "Sensor not found from getSensorPaths"; + messages::resourceNotFound(asyncResp->res, sensorId, "Sensor"); + return; + } if (ec) { messages::internalError(asyncResp->res); - BMCWEB_LOG_ERROR << "Sensor getSensorPaths resp_handler: " + BMCWEB_LOG_DEBUG << "Sensor getSensorPaths resp_handler: " << "Dbus error " << ec; return; } |