entity-manager: deduplicate code in logDeviceAdded
`logDeviceAdded' and `logDeviceRemoved` were using identical code to
query their information from json.
```
diff <(sed -n '20,60p' src/entity_manager/log_device_inventory.cpp) <(sed -n '74,114p' src/entity_manager/log_device_inventory.cpp); echo $?
0
```
Deduplicate the code to prevent future code drift and increase
readability.
Tested: on Tyan S8030
Journal logs appear as expected
```
Oct 09 16:16:52 s8030-bmc-30303035c0c1 entity-manager[7281]: Inventory Added: Supermicro PWS 920P SQ 0
Oct 09 16:16:52 s8030-bmc-30303035c0c1 entity-manager[7281]: Inventory Added: Supermicro PWS 920P SQ 1
Oct 09 16:16:52 s8030-bmc-30303035c0c1 entity-manager[7281]: Inventory Added: Tyan S8030 Baseboard
```
```
    PRIORITY=6
    _BOOT_ID=9c09f24836074e7a95a7eb0fc88c9b42
    _MACHINE_ID=980464f768884a9a8b76eacd41d988bd
    _HOSTNAME=s8030-bmc-30303035c0c1
    _RUNTIME_SCOPE=system
    _UID=0
    _GID=0
    _SYSTEMD_SLICE=system.slice
    _TRANSPORT=journal
    _CAP_EFFECTIVE=1ffffffffff
    CODE_LINE=77
    CODE_FILE=../git/src/entity_manager/log_device_inventory.cpp
    CODE_FUNC=logDeviceAdded
    REDFISH_MESSAGE_ID=OpenBMC.0.1.InventoryAdded
    SYSLOG_IDENTIFIER=entity-manager
    _COMM=entity-manager
    _EXE=/usr/libexec/entity-manager/entity-manager
    _CMDLINE=/usr/libexec/entity-manager/entity-manager
    _SYSTEMD_CGROUP=/system.slice/xyz.openbmc_project.EntityManager.service
    _SYSTEMD_UNIT=xyz.openbmc_project.EntityManager.service
    MESSAGE=Inventory Added: Supermicro PWS 920P SQ 1
    REDFISH_MESSAGE_ARGS=PWS-920P-SQ,PowerSupply,P9212CK03EN1643
    NAME=Supermicro PWS 920P SQ 1
    _PID=7281
    _SYSTEMD_INVOCATION_ID=cf27821a00954b4c84a116c263c39bff
    _SOURCE_REALTIME_TIMESTAMP=1760026612675043
```
Change-Id: I0a51dc781d12069f766f9da9c0a595abd3ae1847
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
diff --git a/src/entity_manager/log_device_inventory.cpp b/src/entity_manager/log_device_inventory.cpp
index 5a8a918..5dd97d1 100644
--- a/src/entity_manager/log_device_inventory.cpp
+++ b/src/entity_manager/log_device_inventory.cpp
@@ -7,6 +7,60 @@
 
 #include <string>
 
+struct InvAddRemoveInfo
+{
+    std::string model = "Unknown";
+    std::string type = "Unknown";
+    std::string sn = "Unknown";
+    std::string name = "Unknown";
+};
+
+static InvAddRemoveInfo queryInvInfo(const nlohmann::json& record)
+{
+    auto findType = record.find("Type");
+    auto findAsset =
+        record.find("xyz.openbmc_project.Inventory.Decorator.Asset");
+
+    std::string model = "Unknown";
+    std::string type = "Unknown";
+    std::string sn = "Unknown";
+    std::string name = "Unknown";
+
+    if (findType != record.end())
+    {
+        type = findType->get<std::string>();
+    }
+    if (findAsset != record.end())
+    {
+        auto findModel = findAsset->find("Model");
+        auto findSn = findAsset->find("SerialNumber");
+        if (findModel != findAsset->end())
+        {
+            model = findModel->get<std::string>();
+        }
+        if (findSn != findAsset->end())
+        {
+            const std::string* getSn = findSn->get_ptr<const std::string*>();
+            if (getSn != nullptr)
+            {
+                sn = *getSn;
+            }
+            else
+            {
+                sn = findSn->dump();
+            }
+        }
+    }
+
+    auto findName = record.find("Name");
+    if (findName != record.end())
+    {
+        name = findName->get<std::string>();
+    }
+
+    return {model, type, sn, name};
+}
+
 void logDeviceAdded(const nlohmann::json& record)
 {
     if (!EM_CACHE_CONFIGURATION)
@@ -17,52 +71,14 @@
     {
         return;
     }
-    auto findType = record.find("Type");
-    auto findAsset =
-        record.find("xyz.openbmc_project.Inventory.Decorator.Asset");
 
-    std::string model = "Unknown";
-    std::string type = "Unknown";
-    std::string sn = "Unknown";
-    std::string name = "Unknown";
+    const auto info = queryInvInfo(record);
 
-    if (findType != record.end())
-    {
-        type = findType->get<std::string>();
-    }
-    if (findAsset != record.end())
-    {
-        auto findModel = findAsset->find("Model");
-        auto findSn = findAsset->find("SerialNumber");
-        if (findModel != findAsset->end())
-        {
-            model = findModel->get<std::string>();
-        }
-        if (findSn != findAsset->end())
-        {
-            const std::string* getSn = findSn->get_ptr<const std::string*>();
-            if (getSn != nullptr)
-            {
-                sn = *getSn;
-            }
-            else
-            {
-                sn = findSn->dump();
-            }
-        }
-    }
-
-    auto findName = record.find("Name");
-    if (findName != record.end())
-    {
-        name = findName->get<std::string>();
-    }
-
-    sd_journal_send("MESSAGE=Inventory Added: %s", name.c_str(), "PRIORITY=%i",
-                    LOG_INFO, "REDFISH_MESSAGE_ID=%s",
-                    "OpenBMC.0.1.InventoryAdded",
-                    "REDFISH_MESSAGE_ARGS=%s,%s,%s", model.c_str(),
-                    type.c_str(), sn.c_str(), "NAME=%s", name.c_str(), NULL);
+    sd_journal_send(
+        "MESSAGE=Inventory Added: %s", info.name.c_str(), "PRIORITY=%i",
+        LOG_INFO, "REDFISH_MESSAGE_ID=%s", "OpenBMC.0.1.InventoryAdded",
+        "REDFISH_MESSAGE_ARGS=%s,%s,%s", info.model.c_str(), info.type.c_str(),
+        info.sn.c_str(), "NAME=%s", info.name.c_str(), NULL);
 }
 
 void logDeviceRemoved(const nlohmann::json& record)
@@ -71,50 +87,12 @@
     {
         return;
     }
-    auto findType = record.find("Type");
-    auto findAsset =
-        record.find("xyz.openbmc_project.Inventory.Decorator.Asset");
 
-    std::string model = "Unknown";
-    std::string type = "Unknown";
-    std::string sn = "Unknown";
-    std::string name = "Unknown";
+    const auto info = queryInvInfo(record);
 
-    if (findType != record.end())
-    {
-        type = findType->get<std::string>();
-    }
-    if (findAsset != record.end())
-    {
-        auto findModel = findAsset->find("Model");
-        auto findSn = findAsset->find("SerialNumber");
-        if (findModel != findAsset->end())
-        {
-            model = findModel->get<std::string>();
-        }
-        if (findSn != findAsset->end())
-        {
-            const std::string* getSn = findSn->get_ptr<const std::string*>();
-            if (getSn != nullptr)
-            {
-                sn = *getSn;
-            }
-            else
-            {
-                sn = findSn->dump();
-            }
-        }
-    }
-
-    auto findName = record.find("Name");
-    if (findName != record.end())
-    {
-        name = findName->get<std::string>();
-    }
-
-    sd_journal_send("MESSAGE=Inventory Removed: %s", name.c_str(),
-                    "PRIORITY=%i", LOG_INFO, "REDFISH_MESSAGE_ID=%s",
-                    "OpenBMC.0.1.InventoryRemoved",
-                    "REDFISH_MESSAGE_ARGS=%s,%s,%s", model.c_str(),
-                    type.c_str(), sn.c_str(), "NAME=%s", name.c_str(), NULL);
+    sd_journal_send(
+        "MESSAGE=Inventory Removed: %s", info.name.c_str(), "PRIORITY=%i",
+        LOG_INFO, "REDFISH_MESSAGE_ID=%s", "OpenBMC.0.1.InventoryRemoved",
+        "REDFISH_MESSAGE_ARGS=%s,%s,%s", info.model.c_str(), info.type.c_str(),
+        info.sn.c_str(), "NAME=%s", info.name.c_str(), NULL);
 }