From 1f36a88109ab5a59b84032d9a2cfb8314f4fbea5 Mon Sep 17 00:00:00 2001 From: Adriana Kobylak Date: Thu, 16 Feb 2017 08:36:55 -0600 Subject: Add HostEvent support to Commit interface Temporary support for the HostEvent data that is checked in instead of auto-generated. Change-Id: I34e0c8d91dd51b26efaadbe0cd8be951f0e4bc01 Signed-off-by: Adriana Kobylak --- log_manager.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'log_manager.cpp') diff --git a/log_manager.cpp b/log_manager.cpp index ef1cae8..e84f27e 100644 --- a/log_manager.cpp +++ b/log_manager.cpp @@ -8,6 +8,7 @@ #include #include #include "elog-lookup.cpp" +#include "elog-errors-HostEvent.hpp" #include "config.h" #include "elog_entry.hpp" #include "log.hpp" @@ -43,6 +44,7 @@ void Manager::commit(uint64_t transactionId, std::string errMsg) std::string transactionIdStr = std::to_string(transactionId); std::vector metalist = g_errMetaMap[errMsg]; + std::vector metalistHostEvent = g_errMetaMapHostEvent[errMsg]; std::vector additionalData; // Read the journal from the end to get the most recent entry first. @@ -103,6 +105,26 @@ void Manager::commit(uint64_t transactionId, std::string errMsg) } efile << "\t}" << std::endl; + // TODO Remove once host event error header file is auto-generated. + // Tracking with issue openbmc/phosphor-logging#4 + for (auto metaVarStrHostEvent : metalistHostEvent) + { + rc = sd_journal_get_data(j, metaVarStrHostEvent.c_str(), + (const void **)&data, &length); + if (rc < 0) + { + // Not found, continue to next metadata variable + logging::log("Failed to find metadata", + logging::entry("META_FIELD=%s", + metaVarStrHostEvent.c_str())); + continue; + } + + // Metatdata variable found, write to file + additionalData.push_back(std::string(data)); + efile << "\t\"@" << data << "\"," << std::endl; + } + // TODO Break only once all metadata fields have been found. Implement // once this function reads the metadata fields from the header file. break; -- cgit v1.2.1