Set error code for isFruPowerOffOnly API
This commit updates isFruPowerOffOnly API to set error code in case of
error. This helps caller of API to take action based on the error code
returned from the API.
Change-Id: Ieb5b0a649ed802cc08ad836bc7399d3dacec9429
Signed-off-by: Rekha Aparna <vrekhaaparna@ibm.com>
diff --git a/test/utest_json_utility.cpp b/test/utest_json_utility.cpp
index 283640f..12598da 100644
--- a/test/utest_json_utility.cpp
+++ b/test/utest_json_utility.cpp
@@ -24,8 +24,17 @@
"], error : " + vpdSpecificUtility::getErrCodeMsg(l_errCode));
}
+ l_errCode = 0;
const bool l_result =
- jsonUtility::isFruPowerOffOnly(l_parsedJson, l_vpdPath);
+ jsonUtility::isFruPowerOffOnly(l_parsedJson, l_vpdPath, l_errCode);
+
+ if (l_errCode)
+ {
+ logging::logMessage(
+ "Failed to check if FRU is power off only for FRU [" + l_vpdPath +
+ "], error : " + vpdSpecificUtility::getErrCodeMsg(l_errCode));
+ }
+
EXPECT_TRUE(l_result);
}
@@ -44,7 +53,16 @@
"], error : " + vpdSpecificUtility::getErrCodeMsg(l_errCode));
}
+ l_errCode = 0;
const bool l_result =
- jsonUtility::isFruPowerOffOnly(l_parsedJson, l_vpdPath);
+ jsonUtility::isFruPowerOffOnly(l_parsedJson, l_vpdPath, l_errCode);
+
+ if (l_errCode)
+ {
+ logging::logMessage(
+ "Failed to check if FRU is power off only for FRU [" + l_vpdPath +
+ "], error : " + vpdSpecificUtility::getErrCodeMsg(l_errCode));
+ }
+
EXPECT_FALSE(l_result);
}
diff --git a/vpd-manager/include/utility/json_utility.hpp b/vpd-manager/include/utility/json_utility.hpp
index 8a8aa18..358fda1 100644
--- a/vpd-manager/include/utility/json_utility.hpp
+++ b/vpd-manager/include/utility/json_utility.hpp
@@ -969,28 +969,29 @@
*
* @param[in] i_sysCfgJsonObj - System config JSON object.
* @param[in] i_vpdFruPath - EEPROM path.
+ * @param[out] o_errCode - To set error code for the error.
* @return - True if FRU VPD can be collected at Chassis Power Off state only.
* False otherwise
*/
inline bool isFruPowerOffOnly(const nlohmann::json& i_sysCfgJsonObj,
- const std::string& i_vpdFruPath)
+ const std::string& i_vpdFruPath,
+ uint16_t& o_errCode)
{
if (i_vpdFruPath.empty())
{
- logging::logMessage("FRU path is empty.");
+ o_errCode = error_code::INVALID_INPUT_PARAMETER;
return false;
}
if (!i_sysCfgJsonObj.contains("frus"))
{
- logging::logMessage("Missing frus tag in system config JSON.");
+ o_errCode = error_code::INVALID_JSON;
return false;
}
if (!i_sysCfgJsonObj["frus"].contains(i_vpdFruPath))
{
- logging::logMessage("JSON object does not contain EEPROM path \'" +
- i_vpdFruPath + "\'");
+ o_errCode = error_code::FRU_PATH_NOT_FOUND;
return false;
}
diff --git a/vpd-manager/src/worker.cpp b/vpd-manager/src/worker.cpp
index 15f5a0e..c2f9621 100644
--- a/vpd-manager/src/worker.cpp
+++ b/vpd-manager/src/worker.cpp
@@ -1550,12 +1550,22 @@
{
// If chassis is powered on, skip collecting FRUs which are
// powerOffOnly.
- if (jsonUtility::isFruPowerOffOnly(m_parsedJson, i_vpdFilePath))
+
+ uint16_t l_errCode = 0;
+ if (jsonUtility::isFruPowerOffOnly(m_parsedJson, i_vpdFilePath,
+ l_errCode))
{
return true;
}
+ else if (l_errCode)
+ {
+ logging::logMessage(
+ "Failed to check if FRU is power off only for FRU [" +
+ i_vpdFilePath +
+ "], error : " + vpdSpecificUtility::getErrCodeMsg(l_errCode));
+ }
- uint16_t l_errCode = 0;
+ l_errCode = 0;
std::string l_invPath = jsonUtility::getInventoryObjPathFromJson(
m_parsedJson, i_vpdFilePath, l_errCode);