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;
}