Log PEL and dump VPD if invalid record(s) found
This commit adds changes in ipz parser to log predictive PEL if any
invalid record(s) is found while parsing. Processing of records still
continues even if any invalid record is found. At the end of parsing the
VPD:
1. A predictive PEL is logged which specifies FRU path and list of
invalid records.
2. The bad VPD binary data is dumped to filesystem so that it can be
collected by FFDC.
Test:
```
1. Using dd command, zero out VINI DR and VMPU VZ keyword values of Op
Panel EEPROM(/sys/bus/i2c/drivers/at24/7-0051/eeprom).
2. Restart vpd-manager service.
3. Check PEL list using peltool and observe that a predictive PEL is
logged with the Op Panel EEPROM path in the description and a list of
bad record names and respective error(Data/ECC) in the UserData1
section.
4. Check /var/lib/vpd/ directory and see dumps directory is created with
a dump file which contains the Op Panel EEPROM binary data
5. Restore the Op Panel EEPROM with backed up correct data
6. Clear all PELs using peltool
7. Restart vpd-manager
8. Observe no new PELs logged for invalid records
```
Change-Id: Iebb526bae3c467b1cd0a256c93d57a56fb87e9f6
Signed-off-by: Souvik Roy <souvikroyofficial10@gmail.com>
diff --git a/vpd-manager/include/event_logger.hpp b/vpd-manager/include/event_logger.hpp
index aec8d30..65399e9 100644
--- a/vpd-manager/include/event_logger.hpp
+++ b/vpd-manager/include/event_logger.hpp
@@ -41,6 +41,17 @@
static std::string getErrorMsg(const std::exception& i_exception);
/**
+ * @brief API to get string representation of a Error type enum.
+ *
+ * @param[in] i_exception - Exception object.
+ *
+ * @return Error msg set for the specific error type. Default error msg
+ * otherwise.
+ */
+ static std::string getErrorTypeString(
+ const types::ErrorType& i_errorType) noexcept;
+
+ /**
* @brief An API to create a PEL with inventory path callout.
*
* This API calls an async method to create PEL, and also handles inventory