summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Alekseev (IBS Group) <ealekseev@ibs.sila.ru>2022-08-08 17:49:59 +0300
committerEvgeny Alekseev (IBS Group) <ealekseev@ibs.sila.ru>2022-08-08 17:49:59 +0300
commitc7196fc27caea8ce2ee0b7e43fc38eedd046b1ca (patch)
treedb8a9ebb302e15325d0251beb91073def0384bba
parent11d90e806ccbc3c218ce3a9617fb885b8187379e (diff)
downloadopenbmc-redfish2phosphor-cpp.tar.xz
IBS: refactor redfish2phosphor-logs using c++redfish2phosphor-cpp
-rwxr-xr-xmeta-ibs/meta-common/recipes-extended/rsyslog/rsyslog/redfish2phosphor-logs.sh33
-rw-r--r--meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.conf4
-rw-r--r--meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog_%.bbappend2
-rw-r--r--meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0001-IBS-bmcweb-evt-registry-add-BMCTimeUpdatedViaNTP.patch30
-rw-r--r--meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0002-IBS-Add-redfish2phosphor-logs.patch271
-rw-r--r--meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/error-types.conf386
-rw-r--r--meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend8
7 files changed, 305 insertions, 429 deletions
diff --git a/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog/redfish2phosphor-logs.sh b/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog/redfish2phosphor-logs.sh
deleted file mode 100755
index 4dd757dc3c..0000000000
--- a/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog/redfish2phosphor-logs.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-DBG_OUTPUT=/dev/null
-. /etc/default/redfish/error-types.conf
-STR_SEVERITIES=("xyz.openbmc_project.Logging.Entry.Level.Emergency"\
- "xyz.openbmc_project.Logging.Entry.Level.Alert"\
- "xyz.openbmc_project.Logging.Entry.Level.Critical"\
- "xyz.openbmc_project.Logging.Entry.Level.Error"\
- "xyz.openbmc_project.Logging.Entry.Level.Warning"\
- "xyz.openbmc_project.Logging.Entry.Level.Notice"\
- "xyz.openbmc_project.Logging.Entry.Level.Informational"\
- "xyz.openbmc_project.Logging.Entry.Level.Debug")
-echo $1 >> $DBG_OUTPUT
-IFS='$' read -ra PARAMS <<< "$1"
-SEVERITY=$((${PARAMS[1]}))
-echo ${PARAMS[0]} >> $DBG_OUTPUT
-echo ${PARAMS[1]} >> $DBG_OUTPUT
-echo ${PARAMS[2]} >> $DBG_OUTPUT
-echo ${PARAMS[3]} >> $DBG_OUTPUT
-SUBSTR=$(echo ${PARAMS[2]} | cut -b 13-)
-echo $SUBSTR >> $DBG_OUTPUT
-echo ${STR_SEVERITIES[${ERR_TYPE_MAP[$SUBSTR]}]} >> $DBG_OUTPUT
-IFS=',' read -ra REDFISH_ARGS <<< ${PARAMS[3]}
-FORMAT_STR="${ERR_STR_MAP[$SUBSTR]}"
-echo $FORMAT_STR >> $DBG_OUTPUT
-echo ${REDFISH_ARGS[@]} >> $DBG_OUTPUT
-MESSAGE="$(printf "$FORMAT_STR" "${REDFISH_ARGS[@]}")"
-echo $MESSAGE >> $DBG_OUTPUT
-if [ -n "$MESSAGE" ]
-then
- busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging xyz.openbmc_project.Logging.Create Create ssa{ss} "$MESSAGE" "${STR_SEVERITIES[${ERR_TYPE_MAP[$SUBSTR]}]}" 0
-else
- echo "Unknown journal entry: $1" | systemd-cat -p 4 -t rsyslog2redfish
-fi
diff --git a/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.conf b/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.conf
index fa073a8479..ec736c924d 100644
--- a/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.conf
+++ b/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.conf
@@ -96,14 +96,14 @@ if ($!MESSAGE_ID == "b370836ccf2f4850ac5bee185b77893a") then {
# If the journal entry has a Redfish MessageId, save as a Redfish event
if ($!REDFISH_MESSAGE_ID != "") then {
action(type="omfile" file="/var/log/redfish" template="RedfishTemplate")
- ^/usr/sbin/redfish2phosphor-logs.sh;RedfishPhosphorTemplate
+ ^/usr/sbin/redfish2phosphor-logs;RedfishPhosphorTemplate
}
# If the journal entry has a Exit Code, save as a Redfish event
if ($!EXIT_STATUS != "" and $!EXIT_STATUS != "0") then {
action(type="omfile" file="/var/log/redfish" template="CrashTemplate")
- ^/usr/sbin/redfish2phosphor-logs.sh;CrashTemplateRedfish
+ ^/usr/sbin/redfish2phosphor-logs;CrashTemplateRedfish
}
#
diff --git a/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog_%.bbappend b/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog_%.bbappend
index 4d2b4b0d01..d2e8845af0 100644
--- a/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog_%.bbappend
+++ b/meta-ibs/meta-common/recipes-extended/rsyslog/rsyslog_%.bbappend
@@ -5,7 +5,6 @@ SRC_URI += "file://rsyslog.conf \
file://rotate-event-logs.service \
file://rotate-event-logs.sh \
file://rsyslog-override.conf \
- file://redfish2phosphor-logs.sh \
"
FILES:${PN} += "${systemd_system_unitdir}/rsyslog.service.d/rsyslog-override.conf"
@@ -23,7 +22,6 @@ do_install:append() {
${D}${systemd_system_unitdir}/rsyslog.service.d/rsyslog-override.conf
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/rotate-event-logs.sh ${D}/${bindir}/rotate-event-logs.sh
- install -m 0755 ${WORKDIR}/redfish2phosphor-logs.sh ${D}/${sbindir}/redfish2phosphor-logs.sh
rm ${D}${sysconfdir}/rsyslog.d/imjournal.conf
}
diff --git a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0001-IBS-bmcweb-evt-registry-add-BMCTimeUpdatedViaNTP.patch b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0001-IBS-bmcweb-evt-registry-add-BMCTimeUpdatedViaNTP.patch
new file mode 100644
index 0000000000..f4a9c0ed7e
--- /dev/null
+++ b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0001-IBS-bmcweb-evt-registry-add-BMCTimeUpdatedViaNTP.patch
@@ -0,0 +1,30 @@
+From fe0561165a7f45b41f2e995c803aa084cba943a3 Mon Sep 17 00:00:00 2001
+From: "Evgeny Alekseev (IBS Group)" <ealekseev@ibs.sila.ru>
+Date: Mon, 8 Aug 2022 16:49:47 +0300
+Subject: [PATCH] IBS: bmcweb evt registry add BMCTimeUpdatedViaNTP
+
+---
+ .../include/registries/openbmc_message_registry.hpp | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/redfish-core/include/registries/openbmc_message_registry.hpp b/redfish-core/include/registries/openbmc_message_registry.hpp
+index 80d30c30..6c616af7 100644
+--- a/redfish-core/include/registries/openbmc_message_registry.hpp
++++ b/redfish-core/include/registries/openbmc_message_registry.hpp
+@@ -2257,6 +2257,16 @@ constexpr std::array registry = {
+ {"string"},
+ "None.",
+ }},
++ MessageEntry{
++ "BMCTimeUpdatedViaNTP",
++ {
++ "Indicates that time was updated via NTP.",
++ "BMC Time updated via NTP. Time: new %1, old %2.",
++ "OK",
++ 0,
++ {},
++ "None.",
++ }},
+
+ };
+ } // namespace redfish::registries::openbmc
diff --git a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0002-IBS-Add-redfish2phosphor-logs.patch b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0002-IBS-Add-redfish2phosphor-logs.patch
new file mode 100644
index 0000000000..841aac9ee7
--- /dev/null
+++ b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0002-IBS-Add-redfish2phosphor-logs.patch
@@ -0,0 +1,271 @@
+From ce9c3f061f24bfd4ca1734b1bf3601f56a898839 Mon Sep 17 00:00:00 2001
+From: "Evgeny Alekseev (IBS Group)" <ealekseev@ibs.sila.ru>
+Date: Mon, 8 Aug 2022 16:52:52 +0300
+Subject: [PATCH] IBS: Add redfish2phosphor-logs
+
+---
+ meson.build | 12 ++
+ src/redfish2phosphor-logs.cpp | 209 ++++++++++++++++++++++++++++++++++
+ 2 files changed, 221 insertions(+)
+ create mode 100644 src/redfish2phosphor-logs.cpp
+
+diff --git a/meson.build b/meson.build
+index 7d8ccce8..45d440ef 100644
+--- a/meson.build
++++ b/meson.build
+@@ -244,6 +244,7 @@ language : 'cpp')
+ # Find the dependency modules, if not found use meson wrap to get them
+ # automatically during the configure step
+ bmcweb_dependencies = []
++redfish2phosphor_dependencies = []
+
+ pam = cxx.find_library('pam', required: true)
+ atomic = cxx.find_library('atomic', required: true)
+@@ -257,6 +258,7 @@ if not sdbusplus.found()
+ sdbusplus = sdbusplus.as_system('system')
+ endif
+ bmcweb_dependencies += sdbusplus
++redfish2phosphor_dependencies += sdbusplus
+
+ tinyxml = dependency('tinyxml2',
+ default_options: ['tests=false'],
+@@ -331,6 +333,7 @@ configure_file(input: 'bmcweb_config.h.in',
+ systemd_system_unit_dir = systemd.get_variable(pkgconfig: 'systemdsystemunitdir')
+
+ bindir = get_option('prefix') + '/' +get_option('bindir')
++sbindir = get_option('prefix') + '/' +get_option('sbindir')
+
+ summary({
+ 'prefix' : get_option('prefix'),
+@@ -382,6 +385,15 @@ executable(
+ install_dir:bindir
+ )
+
++executable(
++ 'redfish2phosphor-logs',
++ 'src/redfish2phosphor-logs.cpp',
++ dependencies: redfish2phosphor_dependencies,
++ include_directories : incdir,
++ install: true,
++ install_dir:sbindir
++)
++
+ srcfiles_unittest = [
+ 'http/ut/utility_test.cpp',
+ 'http/ut/router_test.cpp',
+diff --git a/src/redfish2phosphor-logs.cpp b/src/redfish2phosphor-logs.cpp
+new file mode 100644
+index 00000000..77f79c02
+--- /dev/null
++++ b/src/redfish2phosphor-logs.cpp
+@@ -0,0 +1,209 @@
++#define BMCWEB_ENABLE_LOGGING 1
++#include <syslog.h>
++#include <systemd/sd-journal.h>
++
++#include <logging.hpp>
++#include <registries/openbmc_message_registry.hpp>
++#include <sdbusplus/bus.hpp>
++#include <sdbusplus/bus/match.hpp>
++#include <sdbusplus/message.hpp>
++
++#include <array>
++#include <iostream>
++#include <map>
++#include <ranges>
++#include <regex>
++#include <span>
++#include <string>
++#include <string_view>
++#include <tuple>
++
++using namespace std::literals;
++
++static constexpr char ARG_DELIMITER = '$';
++static constexpr auto ARG_COUNT = 4;
++enum class level
++{
++ EMERG = LOG_EMERG,
++ ALERT = LOG_ALERT,
++ CRIT = LOG_CRIT,
++ ERR = LOG_ERR,
++ WARNING = LOG_WARNING,
++ NOTICE = LOG_NOTICE,
++ INFO = LOG_INFO,
++ DEBUG = LOG_DEBUG,
++};
++static level string2severity(std::string_view str)
++{
++
++ std::map<std::string_view, level> sev_map = {{"Critical", level::CRIT},
++ {"Warning", level::WARNING},
++ {"OK", level::NOTICE}};
++ if (sev_map.count(str))
++ return sev_map.at(str);
++ return level::NOTICE;
++}
++
++static std::string get_format_str(std::string_view str)
++{
++ std::stringstream ret_str;
++
++ std::regex format_re("%\\d");
++ std::regex_replace(std::ostreambuf_iterator<char>(ret_str), str.begin(),
++ str.end(), format_re, "%s");
++ return ret_str.str();
++}
++
++std::vector<std::string_view> Split(const std::string_view str,
++ const char delim = ',')
++{
++ std::vector<std::string_view> result;
++
++ int indexCommaToLeftOfColumn = 0;
++ int indexCommaToRightOfColumn = -1;
++
++ for (int i = 0; i < static_cast<int>(str.size()); i++)
++ {
++ if (str[static_cast<std::basic_string_view<char>::size_type>(i)] ==
++ delim)
++ {
++ indexCommaToLeftOfColumn = indexCommaToRightOfColumn;
++ indexCommaToRightOfColumn = i;
++ int index = indexCommaToLeftOfColumn + 1;
++ int length = indexCommaToRightOfColumn - index;
++
++ // Bounds checking can be omitted as logically, this code can never
++ // be invoked Try it: put a breakpoint here and run the unit tests.
++ /*if (index + length >= static_cast<int>(str.size()))
++ {
++ length--;
++ }
++ if (length < 0)
++ {
++ length = 0;
++ }*/
++
++ std::string_view column(
++ str.data() +
++ static_cast<std::basic_string_view<char>::size_type>(index),
++ static_cast<std::basic_string_view<char>::size_type>(length));
++ result.push_back(column);
++ }
++ }
++ const std::string_view finalColumn(
++ str.data() +
++ static_cast<std::basic_string_view<char>::size_type>(
++ indexCommaToRightOfColumn) +
++ 1,
++ str.size() -
++ static_cast<std::basic_string_view<char>::size_type>(
++ indexCommaToRightOfColumn) -
++ 1);
++ result.push_back(finalColumn);
++ return result;
++}
++
++constexpr auto severity_array = std::to_array(
++ {std::string_view{"xyz.openbmc_project.Logging.Entry.Level.Emergency"},
++ std::string_view{"xyz.openbmc_project.Logging.Entry.Level.Alert"},
++ std::string_view{"xyz.openbmc_project.Logging.Entry.Level.Critical"},
++ std::string_view{"xyz.openbmc_project.Logging.Entry.Level.Error"},
++ std::string_view{"xyz.openbmc_project.Logging.Entry.Level.Warning"},
++ std::string_view{"xyz.openbmc_project.Logging.Entry.Level.Notice"},
++ std::string_view{"xyz.openbmc_project.Logging.Entry.Level.Informational"},
++ std::string_view{"xyz.openbmc_project.Logging.Entry.Level.Debug"}});
++
++static auto& getBus()
++{
++ static auto bus = sdbusplus::bus::new_default();
++ return bus;
++}
++
++template <typename... Args>
++static void dbusCallMethodNoReturn(sdbusplus::bus_t& bus,
++ const std::string& busName,
++ const std::string& path,
++ const std::string& interface,
++ const std::string& method, Args&&... args)
++{
++ auto reqMsg = bus.new_method_call(busName.c_str(), path.c_str(),
++ interface.c_str(), method.c_str());
++ reqMsg.append(std::forward<Args>(args)...);
++ bus.call_noreply(reqMsg);
++}
++
++int main(int argc, char* argv[])
++{
++ crow::Logger::setLogLevel(crow::LogLevel::Warning);
++ if (argc != 2)
++ {
++ BMCWEB_LOG_CRITICAL << "Wrong number of args";
++ return -1;
++ }
++
++ BMCWEB_LOG_DEBUG << "Args:" << argv[1];
++ std::string_view log_argument(argv[1]);
++ BMCWEB_LOG_DEBUG << "Args string_view:" << log_argument;
++ std::vector<std::string_view> arg_vect = Split(log_argument, ARG_DELIMITER);
++ BMCWEB_LOG_DEBUG << "$ args count: " << arg_vect.size();
++ for (auto arg : arg_vect)
++ BMCWEB_LOG_DEBUG << arg;
++ string2severity(arg_vect[2]);
++
++ std::string_view type_header = "OpenBMC.0.1."sv;
++ if (arg_vect[2].find(type_header) == arg_vect[2].npos)
++ {
++ BMCWEB_LOG_CRITICAL << "Illegal Message Type" << arg_vect[2];
++ return -1;
++ }
++ std::string_view type =
++ std::string_view(arg_vect[2].begin() + arg_vect[2].find(type_header) +
++ type_header.size(),
++ arg_vect[2].end());
++ BMCWEB_LOG_DEBUG << "Message type: " << type;
++ const redfish::registries::MessageEntry* message = nullptr;
++ for (const auto& entry : redfish::registries::openbmc::registry)
++ {
++ if (std::string_view(std::get<0>(entry)).find(type) !=
++ std::string_view(std::get<0>(entry)).npos)
++ {
++ BMCWEB_LOG_DEBUG << "Found type";
++ message = &entry;
++ break;
++ }
++
++ get_format_str(std::get<1>(entry).message);
++ }
++ if (!message)
++ {
++ BMCWEB_LOG_CRITICAL << "Couldn't find message type: " << type;
++ return -1;
++ }
++
++ std::string string_msg = std::get<1>(*message).message;
++ auto severity_str = severity_array[static_cast<unsigned int>(
++ string2severity(std::get<1>(*message).messageSeverity))];
++ BMCWEB_LOG_DEBUG << "Severity: " << severity_str;
++
++ auto strsplit_args = Split(arg_vect[3], ',');
++
++ for (auto& m : strsplit_args)
++ BMCWEB_LOG_DEBUG << m;
++ redfish::registries::fillMessageArgs(strsplit_args, string_msg);
++ BMCWEB_LOG_DEBUG << string_msg;
++ try
++ {
++ dbusCallMethodNoReturn(
++ getBus(), "xyz.openbmc_project.Logging"s,
++ "/xyz/openbmc_project/logging"s,
++ "xyz.openbmc_project.Logging.Create"s, "Create"s,
++ std::string(string_msg), std::string(severity_str),
++ std::array<std::pair<std::string, std::string>, 0>{});
++ }
++ catch (const sdbusplus::exception_t& ex)
++ {
++ BMCWEB_LOG_CRITICAL << ex.what();
++ return -1;
++ }
++ return 0;
++}
+\ No newline at end of file
diff --git a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/error-types.conf b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/error-types.conf
deleted file mode 100644
index d65ce34c28..0000000000
--- a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/error-types.conf
+++ /dev/null
@@ -1,386 +0,0 @@
-declare -A ERR_TYPE_MAP
-declare -A ERR_STR_MAP
-ERR_TYPE_MAP["ADDDCCorrectable"]=4
-ERR_TYPE_MAP["AtScaleDebugFeatureEnabledAtHardware"]=2
-ERR_TYPE_MAP["AtScaleDebugFeatureDisabledAtHardware"]=5
-ERR_TYPE_MAP["AtScaleDebugFeatureEnabled"]=2
-ERR_TYPE_MAP["AtScaleDebugFeatureDisabled"]=5
-ERR_TYPE_MAP["AtScaleDebugConnected"]=2
-ERR_TYPE_MAP["AtScaleDebugDisconnected"]=5
-ERR_TYPE_MAP["AtScaleDebugConnectionFailed"]=2
-ERR_TYPE_MAP["AtScaleDebugSpecialUserEnabled"]=2
-ERR_TYPE_MAP["AtScaleDebugSpecialUserDisabled"]=5
-ERR_TYPE_MAP["BIOSAttributesChanged"]=5
-ERR_TYPE_MAP["BIOSBoot"]=5
-ERR_TYPE_MAP["BIOSFirmwarePanicReason"]=4
-ERR_TYPE_MAP["BIOSFirmwareRecoveryReason"]=4
-ERR_TYPE_MAP["BIOSFirmwareResiliencyError"]=2
-ERR_TYPE_MAP["BIOSPOSTCode"]=5
-ERR_TYPE_MAP["BIOSPOSTError"]=4
-ERR_TYPE_MAP["BIOSRecoveryComplete"]=5
-ERR_TYPE_MAP["BIOSRecoveryStart"]=4
-ERR_TYPE_MAP["BMCBootReason"]=5
-ERR_TYPE_MAP["BMCFirmwarePanicReason"]=4
-ERR_TYPE_MAP["BMCFirmwareRecoveryReason"]=4
-ERR_TYPE_MAP["BMCFirmwareResiliencyError"]=2
-ERR_TYPE_MAP["BMCKernelPanic"]=5
-ERR_TYPE_MAP["ChassisIntrusionDetected"]=4
-ERR_TYPE_MAP["ChassisIntrusionReset"]=5
-ERR_TYPE_MAP["ComponentOverTemperature"]=2
-ERR_TYPE_MAP["CPLDFirmwarePanicReason"]=4
-ERR_TYPE_MAP["CPLDFirmwareRecoveryReason"]=4
-ERR_TYPE_MAP["CPLDFirmwareResiliencyError"]=2
-ERR_TYPE_MAP["CPUError"]=2
-ERR_TYPE_MAP["CPUMismatch"]=2
-ERR_TYPE_MAP["CPUThermalTrip"]=2
-ERR_TYPE_MAP["DCPowerOff"]=5
-ERR_TYPE_MAP["DCPowerOn"]=5
-ERR_TYPE_MAP["DriveError"]=4
-ERR_TYPE_MAP["EventLogCleared"]=5
-ERR_TYPE_MAP["FanInserted"]=5
-ERR_TYPE_MAP["FanRedundancyLost"]=4
-ERR_TYPE_MAP["FanRedundancyRegained"]=5
-ERR_TYPE_MAP["FanRemoved"]=5
-ERR_TYPE_MAP["FirmwareActivationCompleted"]=5
-ERR_TYPE_MAP["FirmwareActivationFailed"]=4
-ERR_TYPE_MAP["FirmwareActivationStarted"]=5
-ERR_TYPE_MAP["FirmwareResiliencyError"]=2
-ERR_TYPE_MAP["FirmwareUpdateCompleted"]=5
-ERR_TYPE_MAP["FirmwareUpdateFailed"]=4
-ERR_TYPE_MAP["FirmwareUpdateStaged"]=5
-ERR_TYPE_MAP["FirmwareUpdateStarted"]=5
-ERR_TYPE_MAP["GeneralFirmwareSecurityViolation"]=2
-ERR_TYPE_MAP["InvalidLoginAttempted"]=4
-ERR_TYPE_MAP["InvalidUpload"]=4
-ERR_TYPE_MAP["InventoryAdded"]=5
-ERR_TYPE_MAP["InventoryRemoved"]=5
-ERR_TYPE_MAP["IntelUPILinkWidthReducedToHalf"]=4
-ERR_TYPE_MAP["IntelUPILinkWidthReducedToQuarter"]=4
-ERR_TYPE_MAP["IPMIWatchdog"]=5
-ERR_TYPE_MAP["LanLost"]=4
-ERR_TYPE_MAP["LanRegained"]=5
-ERR_TYPE_MAP["LegacyPCIPERR"]=4
-ERR_TYPE_MAP["LegacyPCISERR"]=2
-ERR_TYPE_MAP["ManufacturingModeEntered"]=2
-ERR_TYPE_MAP["ManufacturingModeExited"]=5
-ERR_TYPE_MAP["MEAutoConfigFailed"]=2
-ERR_TYPE_MAP["MEAutoConfigSuccess"]=5
-ERR_TYPE_MAP["MEBootGuardHealthEvent"]=2
-ERR_TYPE_MAP["MECpuDebugCapabilityDisabled"]=4
-ERR_TYPE_MAP["MEDirectFlashUpdateRequested"]=5
-ERR_TYPE_MAP["MEExceptionDuringShutdown"]=4
-ERR_TYPE_MAP["MEFactoryResetError"]=2
-ERR_TYPE_MAP["MEFactoryRestore"]=5
-ERR_TYPE_MAP["MEFirmwareException"]=4
-ERR_TYPE_MAP["MEFirmwarePanicReason"]=4
-ERR_TYPE_MAP["MEFirmwareRecoveryReason"]=4
-ERR_TYPE_MAP["MEFirmwareResiliencyError"]=2
-ERR_TYPE_MAP["MEFlashEraseError"]=2
-ERR_TYPE_MAP["MEFlashStateInformation"]=2
-ERR_TYPE_MAP["MEFlashStateInformationWritingEnabled"]=5
-ERR_TYPE_MAP["MEFlashVerificationError"]=2
-ERR_TYPE_MAP["MEFlashWearOutWarning"]=4
-ERR_TYPE_MAP["MEImageExecutionFailed"]=2
-ERR_TYPE_MAP["MEInternalError"]=2
-ERR_TYPE_MAP["MEManufacturingError"]=2
-ERR_TYPE_MAP["MEMctpInterfaceError"]=2
-ERR_TYPE_MAP["MemoryECCCorrectable"]=4
-ERR_TYPE_MAP["MemoryECCUncorrectable"]=2
-ERR_TYPE_MAP["MemoryParityCommandAndAddress"]=2
-ERR_TYPE_MAP["MemoryParityNotKnown"]=2
-ERR_TYPE_MAP["MemoryRASConfigurationDisabled"]=5
-ERR_TYPE_MAP["MemoryRASConfigurationEnabled"]=5
-ERR_TYPE_MAP["MemoryRASModeDisabled"]=5
-ERR_TYPE_MAP["MemoryRASModeEnabled"]=5
-ERR_TYPE_MAP["MemoryThermTrip"]=2
-ERR_TYPE_MAP["MEMultiPchModeMisconfig"]=2
-ERR_TYPE_MAP["MEPeciOverDmiError"]=2
-ERR_TYPE_MAP["MEPttHealthEvent"]=4
-ERR_TYPE_MAP["MERecoveryGpioForced"]=5
-ERR_TYPE_MAP["MERestrictedMode"]=2
-ERR_TYPE_MAP["MESmbusLinkFailure"]=2
-ERR_TYPE_MAP["MEUmaError"]=2
-ERR_TYPE_MAP["MEUnsupportedFeature"]=2
-ERR_TYPE_MAP["MirroringRedundancyDegraded"]=4
-ERR_TYPE_MAP["MirroringRedundancyFull"]=5
-ERR_TYPE_MAP["NMIButtonPressed"]=2
-ERR_TYPE_MAP["NMIDiagnosticInterrupt"]=2
-ERR_TYPE_MAP["PCIeCorrectableAdvisoryNonFatal"]=4
-ERR_TYPE_MAP["PCIeCorrectableBadDLLP"]=4
-ERR_TYPE_MAP["PCIeCorrectableBadTLP"]=4
-ERR_TYPE_MAP["PCIeCorrectableHeaderLogOverflow"]=4
-ERR_TYPE_MAP["PCIeCorrectableInternal"]=4
-ERR_TYPE_MAP["PCIeCorrectableLinkBWChanged"]=4
-ERR_TYPE_MAP["PCIeCorrectableReceiverError"]=4
-ERR_TYPE_MAP["PCIeCorrectableReplayNumRollover"]=4
-ERR_TYPE_MAP["PCIeCorrectableReplayTimerTimeout"]=4
-ERR_TYPE_MAP["PCIeCorrectableUnspecifiedAERError"]=4
-ERR_TYPE_MAP["PCIeFatalACSViolation"]=2
-ERR_TYPE_MAP["PCIeFatalAtomicEgressBlocked"]=2
-ERR_TYPE_MAP["PCIeFatalCompleterAbort"]=2
-ERR_TYPE_MAP["PCIeFatalCompletionTimeout"]=2
-ERR_TYPE_MAP["PCIeFatalDataLinkLayerProtocol"]=2
-ERR_TYPE_MAP["PCIeFatalECRCError"]=2
-ERR_TYPE_MAP["PCIeFatalFlowControlProtocol"]=2
-ERR_TYPE_MAP["PCIeFatalMalformedTLP"]=2
-ERR_TYPE_MAP["PCIeFatalMCBlockedTLP"]=2
-ERR_TYPE_MAP["PCIeFatalPoisonedTLP"]=2
-ERR_TYPE_MAP["PCIeFatalReceiverBufferOverflow"]=2
-ERR_TYPE_MAP["PCIeFatalReceivedErrNonFatalMessage"]=2
-ERR_TYPE_MAP["PCIeFatalReceivedFatalMessageFromDownstream"]=2
-ERR_TYPE_MAP["PCIeFatalSurpriseLinkDown"]=2
-ERR_TYPE_MAP["PCIeFatalTLPPrefixBlocked"]=2
-ERR_TYPE_MAP["PCIeFatalUncorrectableInternal"]=2
-ERR_TYPE_MAP["PCIeFatalUnexpectedCompletion"]=2
-ERR_TYPE_MAP["PCIeFatalUnspecifiedNonAERFatalError"]=2
-ERR_TYPE_MAP["PCIeFatalUnsupportedRequest"]=2
-ERR_TYPE_MAP["PowerButtonPressed"]=5
-ERR_TYPE_MAP["PowerRestorePolicyApplied"]=5
-ERR_TYPE_MAP["PowerSupplyConfigurationError"]=4
-ERR_TYPE_MAP["PowerSupplyConfigurationErrorRecovered"]=5
-ERR_TYPE_MAP["PowerSupplyFanFailed"]=4
-ERR_TYPE_MAP["PowerSupplyFanRecovered"]=5
-ERR_TYPE_MAP["PowerSupplyFailed"]=4
-ERR_TYPE_MAP["PowerSupplyFailurePredicted"]=4
-ERR_TYPE_MAP["PowerSupplyInserted"]=5
-ERR_TYPE_MAP["PowerSupplyPowerGoodFailed"]=2
-ERR_TYPE_MAP["PowerSupplyPowerLost"]=4
-ERR_TYPE_MAP["PowerSupplyPowerRestored"]=5
-ERR_TYPE_MAP["PowerSupplyPredictedFailureRecovered"]=5
-ERR_TYPE_MAP["PowerSupplyRecovered"]=5
-ERR_TYPE_MAP["PowerSupplyRemoved"]=4
-ERR_TYPE_MAP["PowerUnitDegradedFromNonRedundant"]=4
-ERR_TYPE_MAP["PowerUnitDegradedFromRedundant"]=4
-ERR_TYPE_MAP["PowerUnitRedundancyDegraded"]=4
-ERR_TYPE_MAP["PowerUnitNonRedundantFromInsufficient"]=4
-ERR_TYPE_MAP["PowerUnitNonRedundantInsufficient"]=2
-ERR_TYPE_MAP["PowerUnitRedundancyLost"]=4
-ERR_TYPE_MAP["PowerUnitRedundancyRegained"]=5
-ERR_TYPE_MAP["PowerUnitNonRedundantSufficient"]=4
-ERR_TYPE_MAP["ResetButtonPressed"]=5
-ERR_TYPE_MAP["SecurityBoot2ndFlashEnabled"]=2
-ERR_TYPE_MAP["SecurityP2aBridgeEnabled"]=2
-ERR_TYPE_MAP["SecurityUartPortDebugEnabled"]=2
-ERR_TYPE_MAP["SecurityUserStrongHashAlgoRestored"]=5
-ERR_TYPE_MAP["SecurityUserNonRootUidZeroAssigned"]=2
-ERR_TYPE_MAP["SecurityUserNonRootUidZeroRemoved"]=5
-ERR_TYPE_MAP["SecurityUserRootEnabled"]=2
-ERR_TYPE_MAP["SecurityUserRootDisabled"]=5
-ERR_TYPE_MAP["SecurityUserUnsupportedShellEnabled"]=2
-ERR_TYPE_MAP["SecurityUserUnsupportedShellRemoved"]=5
-ERR_TYPE_MAP["SecurityUserWeakHashAlgoEnabled"]=2
-ERR_TYPE_MAP["SELEntryAdded"]=5
-ERR_TYPE_MAP["SensorThresholdCriticalHighGoingHigh"]=2
-ERR_TYPE_MAP["SensorThresholdCriticalHighGoingLow"]=5
-ERR_TYPE_MAP["SensorThresholdCriticalLowGoingHigh"]=5
-ERR_TYPE_MAP["SensorThresholdCriticalLowGoingLow"]=2
-ERR_TYPE_MAP["SensorThresholdWarningHighGoingHigh"]=4
-ERR_TYPE_MAP["SensorThresholdWarningHighGoingLow"]=5
-ERR_TYPE_MAP["SensorThresholdWarningLowGoingHigh"]=5
-ERR_TYPE_MAP["SensorThresholdWarningLowGoingLow"]=4
-ERR_TYPE_MAP["ServiceFailure"]=4
-ERR_TYPE_MAP["ServiceStarted"]=5
-ERR_TYPE_MAP["SparingRedundancyDegraded"]=4
-ERR_TYPE_MAP["SparingRedundancyFull"]=5
-ERR_TYPE_MAP["SsbThermalTrip"]=2
-ERR_TYPE_MAP["SystemInterfaceDisabledProvisioned"]=5
-ERR_TYPE_MAP["SystemInterfaceUnprovisioned"]=2
-ERR_TYPE_MAP["SystemInterfaceWhitelistProvisioned"]=4
-ERR_TYPE_MAP["SystemPowerGoodFailed"]=2
-ERR_TYPE_MAP["SystemPowerLost"]=2
-ERR_TYPE_MAP["SystemPowerOffFailed"]=2
-ERR_TYPE_MAP["SystemPowerOnFailed"]=2
-ERR_TYPE_MAP["VoltageRegulatorOverheated"]=2
-ERR_TYPE_MAP["BMCTimeUpdatedViaNTP"]=5
-ERR_STR_MAP["ADDDCCorrectable"]="ADDDC Correctable Error.Socket=%s Channel=%s DIMM=%s Rank=%s."
-ERR_STR_MAP["AtScaleDebugFeatureEnabledAtHardware"]="At-Scale Debug Feature is enabled in hardware."
-ERR_STR_MAP["AtScaleDebugFeatureDisabledAtHardware"]="At-Scale Debug Feature is disabled in hardware."
-ERR_STR_MAP["AtScaleDebugFeatureEnabled"]="At-Scale Debug service is started."
-ERR_STR_MAP["AtScaleDebugFeatureDisabled"]="At-Scale Debug service is stopped."
-ERR_STR_MAP["AtScaleDebugConnected"]="At-Scale Debug service is now connected %s"
-ERR_STR_MAP["AtScaleDebugDisconnected"]="At-Scale Debug service is now disconnected"
-ERR_STR_MAP["AtScaleDebugConnectionFailed"]="At-Scale Debug connection aborted/failed"
-ERR_STR_MAP["AtScaleDebugSpecialUserEnabled"]="At-Scale Debug special user is enabled"
-ERR_STR_MAP["AtScaleDebugSpecialUserDisabled"]="At-Scale Debug special user is disabled"
-ERR_STR_MAP["BIOSAttributesChanged"]="Set of BIOS Attributes changed."
-ERR_STR_MAP["BIOSBoot"]="BIOS System Boot."
-ERR_STR_MAP["BIOSFirmwarePanicReason"]="BIOS firmware panic occurred due to %s."
-ERR_STR_MAP["BIOSFirmwareRecoveryReason"]="BIOS firmware recovery occurred due to %s."
-ERR_STR_MAP["BIOSFirmwareResiliencyError"]="BIOS firmware resiliency error. Error reason: %s."
-ERR_STR_MAP["BIOSPOSTCode"]="Boot Count: %s; Time Stamp Offset: %s seconds; POST Code: %s"
-ERR_STR_MAP["BIOSPOSTError"]="BIOS POST Error. Error Code=%s"
-ERR_STR_MAP["BIOSRecoveryComplete"]="BIOS Recovery Complete."
-ERR_STR_MAP["BIOSRecoveryStart"]="BIOS Recovery Start."
-ERR_STR_MAP["BMCBootReason"]="BMC firmware version %s booted due to %s."
-ERR_STR_MAP["BMCFirmwarePanicReason"]="BMC firmware panic occurred due to %s."
-ERR_STR_MAP["BMCFirmwareRecoveryReason"]="BMC firmware recovery occurred due to %s."
-ERR_STR_MAP["BMCFirmwareResiliencyError"]="BMC firmware resiliency error. Error reason: %s."
-ERR_STR_MAP["BMCKernelPanic"]="BMC rebooted due to kernel panic."
-ERR_STR_MAP["ChassisIntrusionDetected"]="Chassis Intrusion Detected."
-ERR_STR_MAP["ChassisIntrusionReset"]="Chassis Intrusion Reset."
-ERR_STR_MAP["ComponentOverTemperature"]="%s over temperature and being throttled."
-ERR_STR_MAP["CPLDFirmwarePanicReason"]="CPLD firmware panic occurred due to %s."
-ERR_STR_MAP["CPLDFirmwareRecoveryReason"]="CPLD firmware recovery occurred due to %s."
-ERR_STR_MAP["CPLDFirmwareResiliencyError"]="CPLD firmware resiliency error. Error reason: %s."
-ERR_STR_MAP["CPUError"]="CPU Error Occurred: %s."
-ERR_STR_MAP["CPUMismatch"]="CPU %s Mismatch."
-ERR_STR_MAP["CPUThermalTrip"]="CPU %s Thermal Trip."
-ERR_STR_MAP["DCPowerOff"]="Host system DC power is off"
-ERR_STR_MAP["DCPowerOn"]="Host system DC power is on"
-ERR_STR_MAP["DriveError"]="Drive Error Occurred: %s."
-ERR_STR_MAP["EventLogCleared"]="Event Log Cleared."
-ERR_STR_MAP["FanInserted"]="%s inserted."
-ERR_STR_MAP["FanRedundancyLost"]="Fan redundancy lost."
-ERR_STR_MAP["FanRedundancyRegained"]="Fan redundancy regained."
-ERR_STR_MAP["FanRemoved"]="%s removed."
-ERR_STR_MAP["FirmwareActivationCompleted"]="%s firmware activation completed successfully."
-ERR_STR_MAP["FirmwareActivationFailed"]="%s firmware activation failed: %s."
-ERR_STR_MAP["FirmwareActivationStarted"]="%s firmware activation started."
-ERR_STR_MAP["FirmwareResiliencyError"]="Firmware resiliency error. Error reason: %s."
-ERR_STR_MAP["FirmwareUpdateCompleted"]="%s firmware update to version %s completed successfully."
-ERR_STR_MAP["FirmwareUpdateFailed"]="%s firmware update to version %s failed: %s."
-ERR_STR_MAP["FirmwareUpdateStaged"]="%s firmware update to version %s staged successfully."
-ERR_STR_MAP["FirmwareUpdateStarted"]="%s firmware update to version %s started."
-ERR_STR_MAP["GeneralFirmwareSecurityViolation"]="Firmware security violation: %s."
-ERR_STR_MAP["InvalidLoginAttempted"]="Invalid username or password attempted on %s."
-ERR_STR_MAP["InvalidUpload"]="Invalid file uploaded to %s: %s."
-ERR_STR_MAP["InventoryAdded"]="%s %s with serial number %s was installed."
-ERR_STR_MAP["InventoryRemoved"]="%s %s with serial number %s was removed."
-ERR_STR_MAP["IntelUPILinkWidthReducedToHalf"]="Intel UPI link width reduced to half. Node=%s."
-ERR_STR_MAP["IntelUPILinkWidthReducedToQuarter"]="Intel UPI link width reduced to quarter. Node=%s."
-ERR_STR_MAP["IPMIWatchdog"]="Host Watchdog Event: %s"
-ERR_STR_MAP["LanLost"]="%s LAN leash lost."
-ERR_STR_MAP["LanRegained"]="%s LAN leash regained."
-ERR_STR_MAP["LegacyPCIPERR"]="Legacy PCI PERR. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["LegacyPCISERR"]="Legacy PCI SERR. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["ManufacturingModeEntered"]="Entered Manufacturing Mode."
-ERR_STR_MAP["ManufacturingModeExited"]="Exited Manufacturing Mode."
-ERR_STR_MAP["MEAutoConfigFailed"]="Intel ME power sensor auto-configuration failed. Power monitoring, limiting and HW protection features might be unavailable. Failure reason: %s"
-ERR_STR_MAP["MEAutoConfigSuccess"]="Intel ME power sensor auto-configuration succeeded. Determined sources for domain readings are: DC Power: %s ; Chassis Power: %s ; PSU Efficiency: %s ; Unamanaged power: %s"
-ERR_STR_MAP["MEBootGuardHealthEvent"]="Intel ME has detected following issue with Intel Boot Guard: %s"
-ERR_STR_MAP["MECpuDebugCapabilityDisabled"]="CPU Debug Capability disabled"
-ERR_STR_MAP["MEDirectFlashUpdateRequested"]="Intel ME Firmware switched to recovery mode to perform full update from BIOS."
-ERR_STR_MAP["MEExceptionDuringShutdown"]="Power Down command triggered by Intel Node Manager policy failure action and Intel ME forced shutdown. BMC probably did not respond correctly to Chassis Control."
-ERR_STR_MAP["MEFactoryResetError"]="Intel ME has performed automatic reset to factory presets due to following reason: %s"
-ERR_STR_MAP["MEFactoryRestore"]="Intel ME has performed automatic reset to factory presets due to following reason: %s"
-ERR_STR_MAP["MEFirmwareException"]="Intel ME has encountered firmware exception. Error code = %s"
-ERR_STR_MAP["MEFirmwarePanicReason"]="ME firmware panic occurred due to %s."
-ERR_STR_MAP["MEFirmwareRecoveryReason"]="ME firmware recovery occurred due to %s."
-ERR_STR_MAP["MEFirmwareResiliencyError"]="ME firmware resiliency error. Error reason: %s."
-ERR_STR_MAP["MEFlashEraseError"]="Intel ME has encountered an error during Flash erasure procedure probably due to Flash part corruption."
-ERR_STR_MAP["MEFlashStateInformation"]="Intel ME has encountered problem during IO to flash device. Reason: %s"
-ERR_STR_MAP["MEFlashStateInformationWritingEnabled"]="Intel ME has encountered problem during IO to flash device. Reason: %s"
-ERR_STR_MAP["MEFlashVerificationError"]="Intel ME has detected invalid flash descriptor region. Following error is detected: %s"
-ERR_STR_MAP["MEFlashWearOutWarning"]="Warning threshold for number of flash operations has been exceeded. Current percentage of write operations capacity: %s"
-ERR_STR_MAP["MEImageExecutionFailed"]="Intel ME Recovery Image or backup operational image loaded because operational image is corrupted. This may be either caused by Flash device corruption or failed upgrade procedure."
-ERR_STR_MAP["MEInternalError"]="Error during Intel ME execution. Watchdog timeout has expired."
-ERR_STR_MAP["MEManufacturingError"]="Wrong manufacturing configuration detected by Intel ME Firmware. Unable to start operational mode. Reason: %s"
-ERR_STR_MAP["MEMctpInterfaceError"]="Intel ME has detected MCTP interface failure and it is not functional any more. It may indicate the situation when MCTP was not configured by BIOS or a defect which may need a Host reset to recover from. Details: %s"
-ERR_STR_MAP["MemoryECCCorrectable"]="Memory ECC correctable error. Socket=%s Channel=%s DIMM=%s Rank=%s."
-ERR_STR_MAP["MemoryECCUncorrectable"]="Memory ECC uncorrectable error. Socket=%s Channel=%s DIMM=%s Rank=%s."
-ERR_STR_MAP["MemoryParityCommandAndAddress"]="Command and Address parity error. Socket=%s Channel=%s DIMM=%s ChannelValid=%s DIMMValid=%s."
-ERR_STR_MAP["MemoryParityNotKnown"]="Memory parity error. Socket=%s Channel=%s DIMM=%s ChannelValid=%s DIMMValid=%s."
-ERR_STR_MAP["MemoryRASConfigurationDisabled"]="Memory RAS Configuration Disabled. Error=%s Mode=%s."
-ERR_STR_MAP["MemoryRASConfigurationEnabled"]="Memory RAS Configuration Enabled. Error=%s Mode=%s."
-ERR_STR_MAP["MemoryRASModeDisabled"]="Memory RAS Mode Select Disabled. Prior Mode=%s Selected Mode=%s."
-ERR_STR_MAP["MemoryRASModeEnabled"]="Memory RAS Mode Select Enabled. Prior Mode=%s Selected Mode=%s."
-ERR_STR_MAP["MemoryThermTrip"]="Memory ThermTrip asserted: %s."
-ERR_STR_MAP["MEMultiPchModeMisconfig"]="Intel ME error in Multi-PCH mode: %s"
-ERR_STR_MAP["MEPeciOverDmiError"]="Intel ME has detected PECI over DMI interface failure and it is not functional any more. It may indicate the situation when PECI over DMI was not configured by BIOS or a defect which may require a CPU Host reset to recover from. Details: %s"
-ERR_STR_MAP["MEPttHealthEvent"]="Intel ME has detected following issue with Intel PTT: %s"
-ERR_STR_MAP["MERecoveryGpioForced"]="Intel ME Recovery Image loaded due to recovery MGPIO pin asserted. Pin number is configurable in factory presets, Default recovery pin is MGPIO1."
-ERR_STR_MAP["MERestrictedMode"]="Intel ME restricted mode information: %s"
-ERR_STR_MAP["MESmbusLinkFailure"]="Intel ME has detected SMBus link error. Sensor Bus: %s , MUX Address: %s "
-ERR_STR_MAP["MEUmaError"]="Intel ME has encountered UMA operation error. Details: %s"
-ERR_STR_MAP["MEUnsupportedFeature"]="Feature not supported in current segment detected by Intel ME Firmware. Details: %s"
-ERR_STR_MAP["MirroringRedundancyDegraded"]="Mirroring redundancy state degraded. Socket=%s Channel=%s DIMM=%s Pair=%s Rank=%s."
-ERR_STR_MAP["MirroringRedundancyFull"]="Mirroring redundancy state fully redundant. Socket=%s Channel=%s DIMM=%s Pair=%s Rank=%s."
-ERR_STR_MAP["NMIButtonPressed"]="NMI Button Pressed."
-ERR_STR_MAP["NMIDiagnosticInterrupt"]="NMI Diagnostic Interrupt."
-ERR_STR_MAP["PCIeCorrectableAdvisoryNonFatal"]="PCIe Correctable Advisory Non-fatal Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeCorrectableBadDLLP"]="PCIe Correctable Bad DLLP. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeCorrectableBadTLP"]="PCIe Correctable Bad TLP. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeCorrectableHeaderLogOverflow"]="PCIe Correctable Header Log Overflow. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeCorrectableInternal"]="PCIe Correctable Internal Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeCorrectableLinkBWChanged"]="PCIe Correctable Link BW Changed. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeCorrectableReceiverError"]="PCIe Correctable Receiver Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeCorrectableReplayNumRollover"]="PCIe Correctable Replay Num Rollover. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeCorrectableReplayTimerTimeout"]="PCIe Correctable Replay Timer Timeout. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeCorrectableUnspecifiedAERError"]="PCIe Correctable Unspecified AER Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalACSViolation"]="PCIe Fatal ACS Violation. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalAtomicEgressBlocked"]="PCIe Fatal Atomic Egress Blocked. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalCompleterAbort"]="PCIe Fatal Completer Abort. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalCompletionTimeout"]="PCIe Fatal Completion Timeout. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalDataLinkLayerProtocol"]="PCIe Fatal Data Link Layer Protocol Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalECRCError"]="PCIe Fatal ECRC Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalFlowControlProtocol"]="PCIe Fatal Flow Control Protocol Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalMalformedTLP"]="PCIe Fatal Malformed TLP Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalMCBlockedTLP"]="PCIe Fatal MC Blocked TLP Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalPoisonedTLP"]="PCIe Fatal Poisoned TLP Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalReceiverBufferOverflow"]="PCIe Fatal Receiver Buffer Overflow. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalReceivedErrNonFatalMessage"]="PCIe Fatal Received ERR_NONFATAL Message. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalReceivedFatalMessageFromDownstream"]="PCIe Fatal Received Fatal Message From Downstream. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalSurpriseLinkDown"]="PCIe Fatal Surprise Link Down Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalTLPPrefixBlocked"]="PCIe Fatal TLP Prefix Blocked Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalUncorrectableInternal"]="PCIe Fatal Uncorrectable Internal Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalUnexpectedCompletion"]="PCIe Fatal Unexpected Completion. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalUnspecifiedNonAERFatalError"]="PCIe Fatal Unspecified Non-AER Fatal Error. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PCIeFatalUnsupportedRequest"]="PCIe Fatal Unsupported Request. Bus=%s Device=%s Function=%s."
-ERR_STR_MAP["PowerButtonPressed"]="Power Button Pressed."
-ERR_STR_MAP["PowerRestorePolicyApplied"]="Power restore policy applied."
-ERR_STR_MAP["PowerSupplyConfigurationError"]="Power supply %s configuration error."
-ERR_STR_MAP["PowerSupplyConfigurationErrorRecovered"]="Power supply %s configuration error recovered."
-ERR_STR_MAP["PowerSupplyFanFailed"]="Power supply %s fan %s failed."
-ERR_STR_MAP["PowerSupplyFanRecovered"]="Power supply %s fan %s recovered."
-ERR_STR_MAP["PowerSupplyFailed"]="Power supply %s failed."
-ERR_STR_MAP["PowerSupplyFailurePredicted"]="Power supply %s failure predicted."
-ERR_STR_MAP["PowerSupplyInserted"]="Power supply %s inserted."
-ERR_STR_MAP["PowerSupplyPowerGoodFailed"]="Power supply power good failed to assert within %s milliseconds."
-ERR_STR_MAP["PowerSupplyPowerLost"]="Power supply %s power lost."
-ERR_STR_MAP["PowerSupplyPowerRestored"]="Power supply %s power restored."
-ERR_STR_MAP["PowerSupplyPredictedFailureRecovered"]="Power supply %s predicted failure recovered."
-ERR_STR_MAP["PowerSupplyRecovered"]="Power supply %s recovered."
-ERR_STR_MAP["PowerSupplyRemoved"]="Power supply %s removed."
-ERR_STR_MAP["PowerUnitDegradedFromNonRedundant"]="Power Unit degraded from nonredundant."
-ERR_STR_MAP["PowerUnitDegradedFromRedundant"]="Power Unit degraded from redundant."
-ERR_STR_MAP["PowerUnitRedundancyDegraded"]="Power Unit Redundancy degraded."
-ERR_STR_MAP["PowerUnitNonRedundantFromInsufficient"]="Power Unit NonRedundant from insufficient to sufficient."
-ERR_STR_MAP["PowerUnitNonRedundantInsufficient"]="Power Unit NonRedundant and has insufficient resource."
-ERR_STR_MAP["PowerUnitRedundancyLost"]="Power Unit Redundancy lost."
-ERR_STR_MAP["PowerUnitRedundancyRegained"]="Power Unit Redundancy regained."
-ERR_STR_MAP["PowerUnitNonRedundantSufficient"]="Power Unit Nonredundant but has sufficient resource."
-ERR_STR_MAP["ResetButtonPressed"]="Reset Button Pressed."
-ERR_STR_MAP["SecurityBoot2ndFlashEnabled"]="BMC 2nd boot flash is enabled."
-ERR_STR_MAP["SecurityP2aBridgeEnabled"]="P2A(PCIe to AHB) bridge is enabled."
-ERR_STR_MAP["SecurityUartPortDebugEnabled"]="Uart port debug is enabled."
-ERR_STR_MAP["SecurityUserStrongHashAlgoRestored"]="Password computing hash algorithm is changed to sha256/sha512."
-ERR_STR_MAP["SecurityUserNonRootUidZeroAssigned"]="User ID Zero is assigned with non-root user."
-ERR_STR_MAP["SecurityUserNonRootUidZeroRemoved"]="Non root user assigned with user ID zero is removed."
-ERR_STR_MAP["SecurityUserRootEnabled"]="User root is enabled."
-ERR_STR_MAP["SecurityUserRootDisabled"]="User root is disabled."
-ERR_STR_MAP["SecurityUserUnsupportedShellEnabled"]="Unsupported shell is enabled."
-ERR_STR_MAP["SecurityUserUnsupportedShellRemoved"]="Unsupported shell is removed."
-ERR_STR_MAP["SecurityUserWeakHashAlgoEnabled"]="Weak password computing hash algorithm is enabled."
-ERR_STR_MAP["SELEntryAdded"]="SEL Entry Added: %s"
-ERR_STR_MAP["SensorThresholdCriticalHighGoingHigh"]="%s sensor crossed a critical high threshold going high. Reading=%s Threshold=%s."
-ERR_STR_MAP["SensorThresholdCriticalHighGoingLow"]="%s sensor crossed a critical high threshold going low. Reading=%s Threshold=%s."
-ERR_STR_MAP["SensorThresholdCriticalLowGoingHigh"]="%s sensor crossed a critical low threshold going high. Reading=%s Threshold=%s."
-ERR_STR_MAP["SensorThresholdCriticalLowGoingLow"]="%s sensor crossed a critical low threshold going low. Reading=%s Threshold=%s."
-ERR_STR_MAP["SensorThresholdWarningHighGoingHigh"]="%s sensor crossed a warning high threshold going high. Reading=%s Threshold=%s."
-ERR_STR_MAP["SensorThresholdWarningHighGoingLow"]="%s sensor crossed a warning high threshold going low. Reading=%s Threshold=%s."
-ERR_STR_MAP["SensorThresholdWarningLowGoingHigh"]="%s sensor crossed a warning low threshold going high. Reading=%s Threshold=%s."
-ERR_STR_MAP["SensorThresholdWarningLowGoingLow"]="%s sensor crossed a warning low threshold going low. Reading=%s Threshold=%s."
-ERR_STR_MAP["ServiceFailure"]="Service %s has exited unsuccessfully."
-ERR_STR_MAP["ServiceStarted"]="Service %s has started successfully."
-ERR_STR_MAP["SparingRedundancyDegraded"]="Sparing redundancy state degraded. Socket=%s Channel=%s DIMM=%s Domain=%s Rank=%s."
-ERR_STR_MAP["SparingRedundancyFull"]="Sparing redundancy state fully redundant. Socket=%s Channel=%s DIMM=%s Domain=%s Rank=%s."
-ERR_STR_MAP["SsbThermalTrip"]="SSB Thermal trip."
-ERR_STR_MAP["SystemInterfaceDisabledProvisioned"]="The system interface is in the disabled provisioned state."
-ERR_STR_MAP["SystemInterfaceUnprovisioned"]="The system interface is in the unprovisioned state."
-ERR_STR_MAP["SystemInterfaceWhitelistProvisioned"]="The system interface is in the whitelist provisioned state."
-ERR_STR_MAP["SystemPowerGoodFailed"]="System power good failed to assert within %s milliseconds (VR failure)."
-ERR_STR_MAP["SystemPowerLost"]="System Power Lost."
-ERR_STR_MAP["SystemPowerOffFailed"]="System Power-Off Failed."
-ERR_STR_MAP["SystemPowerOnFailed"]="System Power-On Failed."
-ERR_STR_MAP["VoltageRegulatorOverheated"]="%s Voltage Regulator Overheated."
-ERR_STR_MAP["BMCTimeUpdatedViaNTP"]="BMC Time updated via NTP. Time: new %s, old %s."
diff --git a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend
index d55fa3c3d8..9c4ecfa65b 100644
--- a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend
+++ b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend
@@ -6,7 +6,8 @@ SRC_URI += "\
file://0001-Enable-vm-nbdproxy-option.patch \
file://0002-Add-http-ftp-nfs-protocols-to-un-filter-them-FT-58-T.patch \
file://0003-Revert-Rearrange-forward_unauthorized.patch \
- file://error-types.conf \
+ file://0001-IBS-bmcweb-evt-registry-add-BMCTimeUpdatedViaNTP.patch \
+ file://0002-IBS-Add-redfish2phosphor-logs.patch \
"
EXTRA_OEMESON += "\
@@ -16,8 +17,3 @@ EXTRA_OEMESON += "\
-Dredfish-dbus-log=enabled \
"
-do_install:append() {
- install -d ${D}${sysconfdir}/default/redfish
- install -m 0644 ${WORKDIR}/error-types.conf ${D}/${sysconfdir}/default/redfish/.
-}
-