Refactor chassisInterfaces into chassis_utils
Some (e.g. IBM) do not use the
`xyz.openbmc_project.Inventory.Item.Board` interface for chassis
objects. To handle the use pattern easier, this refactors the Chassis
interface into one location and it is referenced from the needed places
(e.g. `getValidChassisPath()`).
Moreover, this part is repeated many times, which goes against best
practices.
Tested:
- GET Chassis related API and check they are the same as before
- Redfish Service Validator passes
Change-Id: Id4a51986262892c5dc81b1a3bc46fa5be7c0e9da
Signed-off-by: Myung Bae <myungbae@us.ibm.com>
diff --git a/redfish-core/lib/storage.hpp b/redfish-core/lib/storage.hpp
index 6fafcce..5b2d78e 100644
--- a/redfish-core/lib/storage.hpp
+++ b/redfish-core/lib/storage.hpp
@@ -18,6 +18,7 @@
#include "query.hpp"
#include "redfish_util.hpp"
#include "registries/privilege_registry.hpp"
+#include "utils/chassis_utils.hpp"
#include "utils/collection.hpp"
#include "utils/dbus_utils.hpp"
@@ -816,11 +817,8 @@
}
// mapper call lambda
- constexpr std::array<std::string_view, 2> interfaces = {
- "xyz.openbmc_project.Inventory.Item.Board",
- "xyz.openbmc_project.Inventory.Item.Chassis"};
dbus::utility::getSubTree(
- "/xyz/openbmc_project/inventory", 0, interfaces,
+ "/xyz/openbmc_project/inventory", 0, chassisInterfaces,
std::bind_front(afterChassisDriveCollectionSubtreeGet, asyncResp,
chassisId));
}
@@ -915,13 +913,10 @@
{
return;
}
- constexpr std::array<std::string_view, 2> interfaces = {
- "xyz.openbmc_project.Inventory.Item.Board",
- "xyz.openbmc_project.Inventory.Item.Chassis"};
// mapper call chassis
dbus::utility::getSubTree(
- "/xyz/openbmc_project/inventory", 0, interfaces,
+ "/xyz/openbmc_project/inventory", 0, chassisInterfaces,
[asyncResp, chassisId,
driveName](const boost::system::error_code& ec,
const dbus::utility::MapperGetSubTreeResponse& subtree) {