Make generated code to be const and extern

Set generated maps to be const so that they don't get
accidentally overwritten.
Use .find() to access these generated data sets as the [] operator
is not const.
Declare the generated maps as extern so that there's
no need to include the generated .cpp file.

Change-Id: I4efdcace099bec738e1fa9b67decbedd515d3dfa
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/Makefile.am b/Makefile.am
index f2c44d9..40f780d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -31,6 +31,7 @@
 	xyz/openbmc_project/Logging/Internal/Manager/server.cpp \
 	log_manager.cpp \
 	log_manager_main.cpp \
+	elog-lookup.cpp \
 	elog_entry.cpp \
 	org.openbmc.Associations.cpp \
 	elog-process-metadata.cpp
diff --git a/log_manager.cpp b/log_manager.cpp
index 21111a0..e497ae0 100644
--- a/log_manager.cpp
+++ b/log_manager.cpp
@@ -8,7 +8,6 @@
 #include <sdbusplus/vtable.hpp>
 #include <systemd/sd-bus.h>
 #include <systemd/sd-journal.h>
-#include "elog-lookup.cpp"
 #include <phosphor-logging/elog-errors-HostEvent.hpp>
 #include "config.h"
 #include "elog_entry.hpp"
@@ -43,8 +42,12 @@
     }
 
     std::string transactionIdStr = std::to_string(transactionId);
-    std::set<std::string> metalist(g_errMetaMap[errMsg].begin(),
-                                   g_errMetaMap[errMsg].end());
+    std::set<std::string> metalist;
+    auto metamap = g_errMetaMap.find(errMsg);
+    if (metamap != g_errMetaMap.end())
+    {
+        metalist.insert(metamap->second.begin(), metamap->second.end());
+    }
     const auto& metalistHostEvent = g_errMetaMapHostEvent[errMsg];
     std::vector<std::string> additionalData;
 
@@ -136,12 +139,18 @@
     AssociationList objects {};
     processMetadata(errMsg, additionalData, objects);
 
+    level reqLevel = level::INFO; // Default to INFO
+    auto levelmap = g_errLevelMap.find(errMsg);
+    if (levelmap != g_errLevelMap.end())
+    {
+        reqLevel = levelmap->second;
+    }
     entries.insert(std::make_pair(entryId, std::make_unique<Entry>(
             busLog,
             objPath,
             entryId,
             ms, // Milliseconds since 1970
-            (Entry::Level)g_errLevelMap[errMsg],
+            static_cast<Entry::Level>(reqLevel),
             std::move(errMsg),
             std::move(additionalData),
             std::move(objects))));
diff --git a/log_manager.hpp b/log_manager.hpp
index 285b337..e2a3359 100644
--- a/log_manager.hpp
+++ b/log_manager.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include <sdbusplus/bus.hpp>
+#include <phosphor-logging/log.hpp>
 #include "elog_entry.hpp"
 #include "xyz/openbmc_project/Logging/Internal/Manager/server.hpp"
 
@@ -8,6 +9,10 @@
 {
 namespace logging
 {
+
+extern const std::map<std::string,std::vector<std::string>> g_errMetaMap;
+extern const std::map<std::string,level> g_errLevelMap;
+
 namespace details
 {
 
diff --git a/tools/phosphor-logging/templates/elog-lookup-template.mako.cpp b/tools/phosphor-logging/templates/elog-lookup-template.mako.cpp
index 5e9e1ba..efa5278 100644
--- a/tools/phosphor-logging/templates/elog-lookup-template.mako.cpp
+++ b/tools/phosphor-logging/templates/elog-lookup-template.mako.cpp
@@ -4,6 +4,7 @@
 // See elog-gen.py for more details
 #include <map>
 #include <vector>
+#include <log_manager.hpp>
 #include <phosphor-logging/log.hpp>
 
 namespace phosphor
@@ -12,7 +13,7 @@
 namespace logging
 {
 
-std::map<std::string,std::vector<std::string>> g_errMetaMap = {
+const std::map<std::string,std::vector<std::string>> g_errMetaMap = {
     % for name in errors:
 <%
     meta_list = []
@@ -33,7 +34,7 @@
     % endfor
 };
 
-std::map<std::string,level> g_errLevelMap = {
+const std::map<std::string,level> g_errLevelMap = {
     % for a in errors:
     {"${a}",level::${error_lvl[a]}},
     % endfor