Populate FRU Fields in the Chassis

This tweaks the probe a bit so that the discovered
item is the baseboard fru, allowing us to steal the
fru fields to use in the chassis.

Tested:

same as https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/22865

Change-Id: I552dbb25769a87d4cd48ac6425bae8a2b93321f9
Signed-off-by: James Feist <james.feist@linux.intel.com>
diff --git a/configurations/R1000 Chassis.json b/configurations/R1000 Chassis.json
index 21fd45e..db2a858 100644
--- a/configurations/R1000 Chassis.json
+++ b/configurations/R1000 Chassis.json
@@ -599,13 +599,19 @@
         "FOUND('WFP Baseboard')",
         "AND",
         "xyz.openbmc_project.FruDevice({'BOARD_PRODUCT_NAME': 'F1UL16RISER\\d'})",
+        "AND",
+        "xyz.openbmc_project.FruDevice({'PRODUCT_PRODUCT_NAME': '.*WFT'})",
         "MATCH_ONE"
     ],
     "Type": "Chassis",
     "xyz.openbmc_project.Inventory.Decorator.Asset": {
-        "Manufacturer": "Intel Corporation",
-        "Model": "R1000",
-        "PartNumber": "R1208",
-        "SerialNumber": "23165"
-    }
+        "Manufacturer": "$PRODUCT_MANUFACTURER",
+        "Model": "$PRODUCT_PRODUCT_NAME",
+        "PartNumber": "$PRODUCT_PART_NUMBER",
+        "SerialNumber": "$PRODUCT_SERIAL_NUMBER"
+    },
+    "xyz.openbmc_project.Inventory.Decorator.AssetTag": {
+        "AssetTag": "$PRODUCT_ASSET_TAG"
+    },
+    "xyz.openbmc_project.Inventory.Item.System": {}
 }
\ No newline at end of file
diff --git a/configurations/R2000 Chassis.json b/configurations/R2000 Chassis.json
index 02367fe..8d704fb 100644
--- a/configurations/R2000 Chassis.json
+++ b/configurations/R2000 Chassis.json
@@ -479,13 +479,19 @@
         "FOUND('WFP Baseboard')",
         "AND",
         "xyz.openbmc_project.FruDevice({'BOARD_PRODUCT_NAME': 'A2UL\\d+RISER\\d'})",
+        "AND",
+        "xyz.openbmc_project.FruDevice({'PRODUCT_PRODUCT_NAME': '.*WFT'})",
         "MATCH_ONE"
     ],
     "Type": "Chassis",
     "xyz.openbmc_project.Inventory.Decorator.Asset": {
-        "Manufacturer": "Intel Corporation",
-        "Model": "R2000",
-        "PartNumber": "R2104",
-        "SerialNumber": "23165"
-    }
+        "Manufacturer": "$PRODUCT_MANUFACTURER",
+        "Model": "$PRODUCT_PRODUCT_NAME",
+        "PartNumber": "$PRODUCT_PART_NUMBER",
+        "SerialNumber": "$PRODUCT_SERIAL_NUMBER"
+    },
+    "xyz.openbmc_project.Inventory.Decorator.AssetTag": {
+        "AssetTag": "$PRODUCT_ASSET_TAG"
+    },
+    "xyz.openbmc_project.Inventory.Item.System": {}
 }
\ No newline at end of file
diff --git a/configurations/WFT Baseboard.json b/configurations/WFT Baseboard.json
index 2a4f07f..78a8393 100644
--- a/configurations/WFT Baseboard.json
+++ b/configurations/WFT Baseboard.json
@@ -2208,9 +2208,9 @@
     "ProductId": 123,
     "Type": "Board",
     "xyz.openbmc_project.Inventory.Decorator.Asset": {
-        "Manufacturer": "$PRODUCT_MANUFACTURER",
-        "Model": "$PRODUCT_PRODUCT_NAME",
-        "PartNumber": "$PRODUCT_PART_NUMBER",
-        "SerialNumber": "$PRODUCT_SERIAL_NUMBER"
+        "Manufacturer": "$BOARD_MANUFACTURER",
+        "Model": "$BOARD_PRODUCT_NAME",
+        "PartNumber": "$BOARD_PART_NUMBER",
+        "SerialNumber": "$BOARD_SERIAL_NUMBER"
     }
 }
\ No newline at end of file
diff --git a/src/EntityManager.cpp b/src/EntityManager.cpp
index 3704f84..03d16f7 100644
--- a/src/EntityManager.cpp
+++ b/src/EntityManager.cpp
@@ -448,11 +448,11 @@
     }
     if (matchOne && ret)
     {
-        // match one could match multiple dbus values, which means we don't care
-        // what one we found so we shouldn't be using template replace. return
-        // an empty one
+        // match the last one
+        auto last = foundDevs.back();
         foundDevs.clear();
-        foundDevs.emplace_back(std::nullopt);
+
+        foundDevs.emplace_back(std::move(last));
     }
     return ret;
 }