Set error code for isBackupAndRestoreRequired API
This commit updates isBackupAndRestoreRequired 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: I78e1c287762c399880ed2d88c5833d9d6cf1701b
Signed-off-by: Rekha Aparna <vrekhaaparna@ibm.com>
diff --git a/vpd-manager/include/utility/json_utility.hpp b/vpd-manager/include/utility/json_utility.hpp
index 9217598..4f028e8 100644
--- a/vpd-manager/include/utility/json_utility.hpp
+++ b/vpd-manager/include/utility/json_utility.hpp
@@ -683,26 +683,29 @@
* exists and size of contents in the path.
*
* @param[in] i_sysCfgJsonObj - System config JSON object.
+ * @param[out] o_errCode - To set error code in case of error.
*
* @return true if backup and restore is required, false otherwise.
*/
-inline bool isBackupAndRestoreRequired(const nlohmann::json& i_sysCfgJsonObj)
+inline bool isBackupAndRestoreRequired(const nlohmann::json& i_sysCfgJsonObj,
+ uint16_t& o_errCode)
{
- try
+ if (i_sysCfgJsonObj.empty())
{
- const std::string& l_backupAndRestoreCfgFilePath =
- i_sysCfgJsonObj.value("backupRestoreConfigPath", "");
- if (!l_backupAndRestoreCfgFilePath.empty() &&
- std::filesystem::exists(l_backupAndRestoreCfgFilePath) &&
- !std::filesystem::is_empty(l_backupAndRestoreCfgFilePath))
- {
- return true;
- }
+ o_errCode = error_code::INVALID_INPUT_PARAMETER;
+ return false;
}
- catch (std::exception& ex)
+
+ const std::string& l_backupAndRestoreCfgFilePath =
+ i_sysCfgJsonObj.value("backupRestoreConfigPath", "");
+
+ if (!l_backupAndRestoreCfgFilePath.empty() &&
+ std::filesystem::exists(l_backupAndRestoreCfgFilePath) &&
+ !std::filesystem::is_empty(l_backupAndRestoreCfgFilePath))
{
- logging::logMessage(ex.what());
+ return true;
}
+
return false;
}
diff --git a/vpd-manager/oem-handler/ibm_handler.cpp b/vpd-manager/oem-handler/ibm_handler.cpp
index 02a92f5..425f6dc 100644
--- a/vpd-manager/oem-handler/ibm_handler.cpp
+++ b/vpd-manager/oem-handler/ibm_handler.cpp
@@ -38,9 +38,10 @@
// Set up minimal things that is needed before bus name is claimed.
performInitialSetup();
+ uint16_t l_errCode = 0;
if (!m_sysCfgJsonObj.empty() &&
- jsonUtility::isBackupAndRestoreRequired(m_sysCfgJsonObj))
+ jsonUtility::isBackupAndRestoreRequired(m_sysCfgJsonObj, l_errCode))
{
try
{
@@ -58,6 +59,12 @@
std::nullopt, std::nullopt, std::nullopt, std::nullopt);
}
}
+ else if (l_errCode)
+ {
+ logging::logMessage(
+ "Failed to check if backup & restore required. Error : " +
+ vpdSpecificUtility::getErrCodeMsg(l_errCode));
+ }
// Instantiate Listener object
m_eventListener = std::make_shared<Listener>(m_worker, m_asioConnection);
diff --git a/vpd-manager/src/worker.cpp b/vpd-manager/src/worker.cpp
index 7a4ce00..55e6709 100644
--- a/vpd-manager/src/worker.cpp
+++ b/vpd-manager/src/worker.cpp
@@ -424,10 +424,20 @@
setJsonSymbolicLink(systemJson);
- if (isSystemVPDOnDBus() &&
- jsonUtility::isBackupAndRestoreRequired(m_parsedJson))
+ if (isSystemVPDOnDBus())
{
- performBackupAndRestore(parsedVpdMap);
+ uint16_t l_errCode = 0;
+ if (jsonUtility::isBackupAndRestoreRequired(m_parsedJson,
+ l_errCode))
+ {
+ performBackupAndRestore(parsedVpdMap);
+ }
+ else if (l_errCode)
+ {
+ logging::logMessage(
+ "Failed to check if backup and restore required. Reason : " +
+ vpdSpecificUtility::getErrCodeMsg(l_errCode));
+ }
}
// proceed to publish system VPD.