Add the getAssociationEndPoints method
There are currently many files that use the get endpoints methods[1].
Since they are general methods, they are defined in the
dbus_utility.hpp file and will be further refactored in subsequent
patches.
Also, Updated the populateSoftwareInformation method of sw_utils.hpp
[1] https://github.com/openbmc/docs/blob/master/architecture/object-mapper.md#associations
When an object with, for example, an object path of pathA uses
the following values:
["foo", "bar", "pathB"]
The mapper will create 2 new objects:
pathA/foo
pathB/bar
Tested: Built bmcweb successuflly and Validator passes
curl -k -H "X-Auth-Token: $token" -X GET
https://${bmc}/redfish/v1/Managers/bmc
{
"@odata.id": "/redfish/v1/Managers/bmc",
"@odata.type": "#Manager.v1_14_0.Manager",
...
"FirmwareVersion": "2.14.0-dev-95-gea3949e76-dirty",
...
}
Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: I6567f63ab63709504b46ed49b00055a8ffc34124
diff --git a/include/dbus_utility.hpp b/include/dbus_utility.hpp
index e953a9f..eac3099 100644
--- a/include/dbus_utility.hpp
+++ b/include/dbus_utility.hpp
@@ -18,6 +18,7 @@
#include "dbus_singleton.hpp"
#include <boost/system/error_code.hpp> // IWYU pragma: keep
+#include <sdbusplus/asio/property.hpp>
#include <sdbusplus/message/native_types.hpp>
#include <array>
@@ -94,6 +95,7 @@
std::vector<std::pair<std::string, std::vector<std::string>>>>>;
using MapperGetSubTreePathsResponse = std::vector<std::string>;
+using MapperEndPoints = std::vector<sdbusplus::message::object_path>;
inline void escapePathForDbus(std::string& path)
{
@@ -193,5 +195,15 @@
"xyz.openbmc_project.ObjectMapper", "GetObject", path, interfaces);
}
+inline void getAssociationEndPoints(
+ const std::string& path,
+ std::function<void(const boost::system::error_code&,
+ const MapperEndPoints&)>&& callback)
+{
+ sdbusplus::asio::getProperty<MapperEndPoints>(
+ *crow::connections::systemBus, "xyz.openbmc_project.ObjectMapper", path,
+ "xyz.openbmc_project.Association", "endpoints", std::move(callback));
+}
+
} // namespace utility
} // namespace dbus