|  | #include "prime_inventory.hpp" | 
|  |  | 
|  | #include "event_logger.hpp" | 
|  | #include "exceptions.hpp" | 
|  | #include "utility/dbus_utility.hpp" | 
|  | #include "utility/json_utility.hpp" | 
|  | #include "utility/vpd_specific_utility.hpp" | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | PrimeInventory::PrimeInventory() | 
|  | { | 
|  | try | 
|  | { | 
|  | uint16_t l_errCode = 0; | 
|  | m_sysCfgJsonObj = | 
|  | vpd::jsonUtility::getParsedJson(INVENTORY_JSON_SYM_LINK, l_errCode); | 
|  |  | 
|  | if (l_errCode) | 
|  | { | 
|  | throw std::runtime_error( | 
|  | "JSON parsing failed for file [ " + | 
|  | std::string(INVENTORY_JSON_SYM_LINK) + " ], error : " + | 
|  | vpd::vpdSpecificUtility::getErrCodeMsg(l_errCode)); | 
|  | } | 
|  |  | 
|  | // check for mandatory fields at this point itself. | 
|  | if (!m_sysCfgJsonObj.contains("frus")) | 
|  | { | 
|  | throw std::runtime_error( | 
|  | "Mandatory tag(s) missing from JSON file [" + | 
|  | std::string(INVENTORY_JSON_SYM_LINK) + "]"); | 
|  | } | 
|  | } | 
|  | catch (const std::exception& l_ex) | 
|  | { | 
|  | vpd::EventLogger::createSyncPel( | 
|  | vpd::types::ErrorType::JsonFailure, | 
|  | vpd::types::SeverityType::Critical, __FILE__, __FUNCTION__, 0, | 
|  | "Prime inventory failed, reason: " + std::string(l_ex.what()), | 
|  | std::nullopt, std::nullopt, std::nullopt, std::nullopt); | 
|  |  | 
|  | throw; | 
|  | } | 
|  | } | 
|  |  | 
|  | bool PrimeInventory::isPrimingRequired() const noexcept | 
|  | { | 
|  | // ToDo: Check if priming is required. | 
|  | return true; | 
|  | } | 
|  |  | 
|  | void PrimeInventory::primeSystemBlueprint() const noexcept | 
|  | { | 
|  | try | 
|  | { | 
|  | /*ToDo: | 
|  | * Check if priming is required. | 
|  | * Traverse the system config JSON & | 
|  | prime all the FRU paths which qualifies for priming. | 
|  | */ | 
|  | } | 
|  | catch (const std::exception& l_ex) | 
|  | { | 
|  | // ToDo: log an error | 
|  | } | 
|  | } | 
|  |  | 
|  | bool PrimeInventory::primeInventory( | 
|  | [[maybe_unused]] const std::string& i_vpdFilePath) const noexcept | 
|  | { | 
|  | // ToDo: Travers system config JSON & prime inventory objects found under | 
|  | // the EEPROM. | 
|  | return true; | 
|  | } | 
|  |  | 
|  | void PrimeInventory::populateInterfaces( | 
|  | [[maybe_unused]] const nlohmann::json& i_interfaceJson, | 
|  | [[maybe_unused]] vpd::types::InterfaceMap& io_interfaceMap, | 
|  | [[maybe_unused]] const vpd::types::VPDMapVariant& i_parsedVpdMap) | 
|  | const noexcept | 
|  | { | 
|  | // ToDo: Populate interfaces needs to be published on Dbus. | 
|  | } | 
|  |  | 
|  | void PrimeInventory::processFunctionalProperty( | 
|  | [[maybe_unused]] const std::string& i_inventoryObjPath, | 
|  | [[maybe_unused]] vpd::types::InterfaceMap& io_interfaces) const noexcept | 
|  | { | 
|  | // ToDo: Populate interface to publish Functional property on Dbus. | 
|  | } | 
|  |  | 
|  | void PrimeInventory::processEnabledProperty( | 
|  | [[maybe_unused]] const std::string& i_inventoryObjPath, | 
|  | [[maybe_unused]] vpd::types::InterfaceMap& io_interfaces) const noexcept | 
|  | { | 
|  | // ToDo: Populate interface to publish Enabled property on Dbus. | 
|  | } |