Use getAssetInfo util function
This commit is to use getAssetInfo utility function for GET AssetInfo in
various places like
- Chassis
- FabricAdapter
This will also include `Manufacturer` property if available on dbus.
- Fan
- PCIeDevice
- PowerSupply
- Storage
- System
Tested:
- GET the above schemas
- Redfish Service Validator passes
Change-Id: I9d01d583212fe4916d5fdd144d2b8e52ad865d16
Signed-off-by: Myung Bae <myungbae@us.ibm.com>
diff --git a/redfish-core/lib/storage.hpp b/redfish-core/lib/storage.hpp
index a7243a0..89ae4b1 100644
--- a/redfish-core/lib/storage.hpp
+++ b/redfish-core/lib/storage.hpp
@@ -291,60 +291,6 @@
std::bind_front(handleStorageGet, std::ref(app)));
}
-inline void getDriveAsset(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
- const std::string& connectionName,
- const std::string& path)
-{
- dbus::utility::getAllProperties(
- connectionName, path, "xyz.openbmc_project.Inventory.Decorator.Asset",
- [asyncResp](const boost::system::error_code& ec,
- const std::vector<
- std::pair<std::string, dbus::utility::DbusVariantType>>&
- propertiesList) {
- if (ec)
- {
- // this interface isn't necessary
- return;
- }
-
- const std::string* partNumber = nullptr;
- const std::string* serialNumber = nullptr;
- const std::string* manufacturer = nullptr;
- const std::string* model = nullptr;
-
- const bool success = sdbusplus::unpackPropertiesNoThrow(
- dbus_utils::UnpackErrorPrinter(), propertiesList, "PartNumber",
- partNumber, "SerialNumber", serialNumber, "Manufacturer",
- manufacturer, "Model", model);
-
- if (!success)
- {
- messages::internalError(asyncResp->res);
- return;
- }
-
- if (partNumber != nullptr)
- {
- asyncResp->res.jsonValue["PartNumber"] = *partNumber;
- }
-
- if (serialNumber != nullptr)
- {
- asyncResp->res.jsonValue["SerialNumber"] = *serialNumber;
- }
-
- if (manufacturer != nullptr)
- {
- asyncResp->res.jsonValue["Manufacturer"] = *manufacturer;
- }
-
- if (model != nullptr)
- {
- asyncResp->res.jsonValue["Model"] = *model;
- }
- });
-}
-
inline void getDrivePresent(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
const std::string& connectionName,
const std::string& path)
@@ -614,7 +560,8 @@
{
if (interface == "xyz.openbmc_project.Inventory.Decorator.Asset")
{
- getDriveAsset(asyncResp, connectionName, path);
+ asset_utils::getAssetInfo(asyncResp, connectionName, path,
+ ""_json_pointer, false);
}
else if (interface == "xyz.openbmc_project.Inventory.Item")
{
@@ -971,53 +918,6 @@
std::bind_front(handleChassisDriveGet, std::ref(app)));
}
-inline void getStorageControllerAsset(
- const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
- const boost::system::error_code& ec,
- const std::vector<std::pair<std::string, dbus::utility::DbusVariantType>>&
- propertiesList)
-{
- if (ec)
- {
- // this interface isn't necessary
- BMCWEB_LOG_DEBUG("Failed to get StorageControllerAsset");
- return;
- }
-
- const std::string* partNumber = nullptr;
- const std::string* serialNumber = nullptr;
- const std::string* manufacturer = nullptr;
- const std::string* model = nullptr;
- if (!sdbusplus::unpackPropertiesNoThrow(
- dbus_utils::UnpackErrorPrinter(), propertiesList, "PartNumber",
- partNumber, "SerialNumber", serialNumber, "Manufacturer",
- manufacturer, "Model", model))
- {
- messages::internalError(asyncResp->res);
- return;
- }
-
- if (partNumber != nullptr)
- {
- asyncResp->res.jsonValue["PartNumber"] = *partNumber;
- }
-
- if (serialNumber != nullptr)
- {
- asyncResp->res.jsonValue["SerialNumber"] = *serialNumber;
- }
-
- if (manufacturer != nullptr)
- {
- asyncResp->res.jsonValue["Manufacturer"] = *manufacturer;
- }
-
- if (model != nullptr)
- {
- asyncResp->res.jsonValue["Model"] = *model;
- }
-}
-
inline void populateStorageController(
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
const std::string& controllerId, const std::string& connectionName,
@@ -1049,14 +949,8 @@
}
});
- dbus::utility::getAllProperties(
- connectionName, path, "xyz.openbmc_project.Inventory.Decorator.Asset",
- [asyncResp](const boost::system::error_code& ec,
- const std::vector<
- std::pair<std::string, dbus::utility::DbusVariantType>>&
- propertiesList) {
- getStorageControllerAsset(asyncResp, ec, propertiesList);
- });
+ asset_utils::getAssetInfo(asyncResp, connectionName, path, ""_json_pointer,
+ false);
}
inline void getStorageControllerHandler(