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/src/event_logger.cpp b/vpd-manager/src/event_logger.cpp
index d5bf3d2..a114df5 100644
--- a/vpd-manager/src/event_logger.cpp
+++ b/vpd-manager/src/event_logger.cpp
@@ -423,4 +423,13 @@
return *l_ptrToErrMsg;
}
+
+std::string EventLogger::getErrorTypeString(
+ const types::ErrorType& i_errorType) noexcept
+{
+ const auto l_entry = m_errorMsgMap.find(i_errorType);
+ return (l_entry != m_errorMsgMap.end()
+ ? l_entry->second
+ : m_errorMsgMap.at(types::ErrorType::UndefinedError));
+}
} // namespace vpd