Add async_method_call to utility
Adding async_method_call in dbus utility gives us a place where we can
intercept method call requests from dbus to potentially add
logging/caching.
An example of logging is in the later commit:
https://gerrit.openbmc.org/c/openbmc/bmcweb/+/78265/
We already do this for setProperty, this moves the method calls to
follow a similar pattern.
Tested: Redfish service validator passes.
Change-Id: I6d2c96e2b6b6a023ed2138106a55faebca161592
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/COMMON_ERRORS.md b/COMMON_ERRORS.md
index 11f751e..810066e 100644
--- a/COMMON_ERRORS.md
+++ b/COMMON_ERRORS.md
@@ -212,7 +212,7 @@
```cpp
BMCWEB_ROUTE("/myendpoint/<str>",
[](Request& req, Response& res, const std::string& id){
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[asyncResp](const boost::system::error_code& ec,
const std::string& myProperty) {
if (ec)
@@ -244,7 +244,7 @@
```cpp
BMCWEB_ROUTE("/myendpoint/<str>",
[](Request& req, Response& res, const std::string& id){
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[asyncResp](const boost::system::error_code& ec,
const std::string& myProperty) {
if (ec == <error code that gets returned by not found>){
@@ -374,7 +374,7 @@
## 15. Using async_method_call where there are existing helper methods
```cpp
-crow::connections::systemBus->async_method_call(
+dbus::utility::async_method_call(
respHandler, "xyz.openbmc_project.ObjectMapper",
"/xyz/openbmc_project/object_mapper",
"xyz.openbmc_project.ObjectMapper", "GetSubTreePaths",
diff --git a/include/async_resolve.hpp b/include/async_resolve.hpp
index 1a6f1b7..9dc41f7 100644
--- a/include/async_resolve.hpp
+++ b/include/async_resolve.hpp
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
-#include "dbus_singleton.hpp"
+#include "dbus_utility.hpp"
#include "logging.hpp"
#include <sys/socket.h>
@@ -90,7 +90,7 @@
}
uint64_t flag = 0;
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[host{std::string(host)}, portNum,
handler = std::forward<ResolveHandler>(handler)](
const boost::system::error_code& ec,
diff --git a/include/dbus_privileges.hpp b/include/dbus_privileges.hpp
index 9b12244..524ff1b 100644
--- a/include/dbus_privileges.hpp
+++ b/include/dbus_privileges.hpp
@@ -3,7 +3,6 @@
#pragma once
#include "async_resp.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "http_request.hpp"
@@ -139,7 +138,8 @@
std::move_only_function<void(const dbus::utility::DBusPropertiesMap&)>&&
callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, callback = std::move(callback)](
const boost::system::error_code& ec,
const dbus::utility::DBusPropertiesMap& userInfoMap) mutable {
diff --git a/include/dbus_utility.hpp b/include/dbus_utility.hpp
index d1f4a84..4eedcbf 100644
--- a/include/dbus_utility.hpp
+++ b/include/dbus_utility.hpp
@@ -3,6 +3,7 @@
// SPDX-FileCopyrightText: Copyright 2018 Intel Corporation
#pragma once
+#include "async_resp.hpp"
#include "boost_formatters.hpp"
#include "dbus_singleton.hpp"
@@ -14,6 +15,7 @@
#include <cstddef>
#include <cstdint>
#include <functional>
+#include <memory>
#include <span>
#include <string>
#include <string_view>
@@ -99,6 +101,29 @@
std::function<void(const boost::system::error_code&,
const DBusPropertiesMap&)>&& callback);
+template <typename MessageHandler, typename... InputArgs>
+// NOLINTNEXTLINE(readability-identifier-naming)
+void async_method_call(MessageHandler&& handler, const std::string& service,
+ const std::string& objpath, const std::string& interf,
+ const std::string& method, const InputArgs&... a)
+{
+ crow::connections::systemBus->async_method_call(
+ std::forward<MessageHandler>(handler), service, objpath, interf, method,
+ a...);
+}
+
+template <typename MessageHandler, typename... InputArgs>
+// NOLINTNEXTLINE(readability-identifier-naming)
+void async_method_call(const std::shared_ptr<bmcweb::AsyncResp>& /*asyncResp*/,
+ MessageHandler&& handler, const std::string& service,
+ const std::string& objpath, const std::string& interf,
+ const std::string& method, const InputArgs&... a)
+{
+ crow::connections::systemBus->async_method_call(
+ std::forward<MessageHandler>(handler), service, objpath, interf, method,
+ a...);
+}
+
template <typename PropertyType>
void getProperty(const std::string& service, const std::string& objectPath,
const std::string& interface, const std::string& propertyName,
diff --git a/include/google/google_service_root.hpp b/include/google/google_service_root.hpp
index 8b0d36c..3d21af7 100644
--- a/include/google/google_service_root.hpp
+++ b/include/google/google_service_root.hpp
@@ -4,7 +4,6 @@
#include "app.hpp"
#include "async_resp.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "http_request.hpp"
@@ -188,7 +187,8 @@
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp{asyncResp}](const boost::system::error_code& ec,
const std::vector<uint8_t>& responseBytes) {
invocationCallback(asyncResp, ec, responseBytes);
diff --git a/include/hostname_monitor.hpp b/include/hostname_monitor.hpp
index 839faab..21cc88a 100644
--- a/include/hostname_monitor.hpp
+++ b/include/hostname_monitor.hpp
@@ -35,7 +35,7 @@
inline void installCertificate(const std::filesystem::path& certPath)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[certPath](const boost::system::error_code& ec) {
if (ec)
{
diff --git a/include/obmc_console.hpp b/include/obmc_console.hpp
index e94b6a9..40b72fe 100644
--- a/include/obmc_console.hpp
+++ b/include/obmc_console.hpp
@@ -2,7 +2,6 @@
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#pragma once
#include "app.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "io_context_singleton.hpp"
#include "logging.hpp"
@@ -263,7 +262,7 @@
BMCWEB_LOG_DEBUG("Looking up unixFD for Service {} Path {}", consoleService,
consoleObjPath);
// Call Connect() method to get the unix FD
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[&conn](const boost::system::error_code& ec1,
const sdbusplus::message::unix_fd& unixfd) {
connectConsoleSocket(conn, ec1, unixfd);
diff --git a/include/openbmc_dbus_rest.hpp b/include/openbmc_dbus_rest.hpp
index 967c934..f651c38 100644
--- a/include/openbmc_dbus_rest.hpp
+++ b/include/openbmc_dbus_rest.hpp
@@ -103,7 +103,7 @@
transaction->res.jsonValue["objects"] = nlohmann::json::array();
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[transaction, processName{std::string(processName)},
objectPath{std::string(objectPath)}](
const boost::system::error_code& ec,
@@ -335,7 +335,7 @@
{
BMCWEB_LOG_DEBUG("Finding objectmanager for path {} on connection:{}",
objectName, connectionName);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[transaction, objectName, connectionName](
const boost::system::error_code& ec,
const dbus::utility::MapperGetAncestorsResponse& objects) {
@@ -1362,7 +1362,7 @@
const std::string& connectionName)
{
BMCWEB_LOG_DEBUG("findActionOnInterface for connection {}", connectionName);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[transaction, connectionName{std::string(connectionName)}](
const boost::system::error_code& ec,
const std::string& introspectXml) {
@@ -1896,7 +1896,7 @@
{
const std::string& connectionName = connection.first;
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[connectionName{std::string(connectionName)},
transaction](const boost::system::error_code& ec3,
const std::string& introspectXml) {
@@ -2183,7 +2183,7 @@
}
if (interfaceName.empty())
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[asyncResp, processName,
objectPath](const boost::system::error_code& ec,
const std::string& introspectXml) {
@@ -2237,7 +2237,7 @@
}
else if (methodName.empty())
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[asyncResp, processName, objectPath,
interfaceName](const boost::system::error_code& ec,
const std::string& introspectXml) {
@@ -2504,7 +2504,7 @@
}
}
};
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
std::move(myCallback), "org.freedesktop.DBus", "/",
"org.freedesktop.DBus", "ListNames");
});
diff --git a/include/vm_websocket.hpp b/include/vm_websocket.hpp
index 95cb982..b930b64 100644
--- a/include/vm_websocket.hpp
+++ b/include/vm_websocket.hpp
@@ -5,7 +5,6 @@
#include "bmcweb_config.h"
#include "app.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "io_context_singleton.hpp"
#include "logging.hpp"
@@ -232,7 +231,7 @@
BMCWEB_LOG_DEBUG("Failed to remove file, ignoring");
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
dbus::utility::logError, "xyz.openbmc_project.VirtualMedia", path,
"xyz.openbmc_project.VirtualMedia.Proxy", "Unmount");
}
@@ -290,7 +289,7 @@
acceptor.async_accept(
std::bind_front(&NbdProxyServer::afterAccept, weak_from_this()));
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[weak{weak_from_this()}](const boost::system::error_code& ec,
bool isBinary) {
afterMount(weak, ec, isBinary);
diff --git a/redfish-core/include/snmp_trap_event_clients.hpp b/redfish-core/include/snmp_trap_event_clients.hpp
index 4a799b7..8f47664 100644
--- a/redfish-core/include/snmp_trap_event_clients.hpp
+++ b/redfish-core/include/snmp_trap_event_clients.hpp
@@ -3,7 +3,6 @@
#pragma once
#include "async_resp.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "event_service_manager.hpp"
@@ -91,7 +90,8 @@
inline void getSnmpTrapClient(
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, const std::string& id)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, id](const boost::system::error_code& ec,
dbus::utility::ManagedObjectType& resp) {
if (ec)
@@ -179,7 +179,8 @@
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
const std::string& host, uint16_t snmpTrapPort)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp,
host](const boost::system::error_code& ec,
const sdbusplus::message_t& msg, const std::string& dbusSNMPid) {
@@ -221,7 +222,8 @@
"/xyz/openbmc_project/network/snmp/manager") /
std::string(snmpTrapId);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, param](const boost::system::error_code& ec) {
if (ec)
{
diff --git a/redfish-core/include/utils/chassis_utils.hpp b/redfish-core/include/utils/chassis_utils.hpp
index d9fcf59..bc856a6 100644
--- a/redfish-core/include/utils/chassis_utils.hpp
+++ b/redfish-core/include/utils/chassis_utils.hpp
@@ -3,6 +3,7 @@
#pragma once
#include "async_resp.hpp"
+#include "boost_formatters.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "logging.hpp"
diff --git a/redfish-core/include/utils/sw_utils.hpp b/redfish-core/include/utils/sw_utils.hpp
index a803b51..f4872b5 100644
--- a/redfish-core/include/utils/sw_utils.hpp
+++ b/redfish-core/include/utils/sw_utils.hpp
@@ -4,6 +4,7 @@
#include "bmcweb_config.h"
#include "async_resp.hpp"
+#include "boost_formatters.hpp"
#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index d7f686c..63c51a8 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -9,7 +9,6 @@
#include "async_resp.hpp"
#include "boost_formatters.hpp"
#include "certificate_service.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "generated/enums/account_service.hpp"
@@ -392,7 +391,8 @@
// delete the existing object
if (index < roleMapObjData.size())
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, roleMapObjData, serverType,
index](const boost::system::error_code& ec) {
if (ec)
@@ -506,7 +506,8 @@
BMCWEB_LOG_DEBUG("Remote Group={},LocalRole={}", *remoteGroup,
*localRole);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, serverType, localRole,
remoteGroup](const boost::system::error_code& ec) {
if (ec)
@@ -1820,7 +1821,8 @@
tempObjPath /= username;
const std::string userPath(tempObjPath);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, password](const boost::system::error_code& ec3) {
if (ec3)
{
@@ -1912,7 +1914,8 @@
messages::internalError(asyncResp->res);
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, username, password](const boost::system::error_code& ec2,
sdbusplus::message_t& m) {
processAfterCreateUser(asyncResp, username, password, ec2, m);
@@ -2191,7 +2194,8 @@
tempObjPath /= username;
const std::string userPath(tempObjPath);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, username](const boost::system::error_code& ec) {
if (ec)
{
@@ -2285,7 +2289,8 @@
locked, accountTypes, userSelf, req.session);
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, username, password(std::move(password)),
roleId(std::move(roleId)), enabled, newUser{std::string(*newUserName)},
locked, userSelf, session = req.session,
diff --git a/redfish-core/lib/bios.hpp b/redfish-core/lib/bios.hpp
index 99635b2..560fe7f 100644
--- a/redfish-core/lib/bios.hpp
+++ b/redfish-core/lib/bios.hpp
@@ -6,7 +6,7 @@
#include "app.hpp"
#include "async_resp.hpp"
-#include "dbus_singleton.hpp"
+#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "http_request.hpp"
#include "logging.hpp"
@@ -103,7 +103,8 @@
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec) {
if (ec)
{
diff --git a/redfish-core/lib/certificate_service.hpp b/redfish-core/lib/certificate_service.hpp
index 645c242..6d69bc9 100644
--- a/redfish-core/lib/certificate_service.hpp
+++ b/redfish-core/lib/certificate_service.hpp
@@ -423,7 +423,8 @@
const std::string& service,
const sdbusplus::message::object_path& objectPath)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp,
id{objectPath.filename()}](const boost::system::error_code& ec) {
if (ec)
@@ -610,7 +611,8 @@
std::shared_ptr<CertificateFile> certFile =
std::make_shared<CertificateFile>(certificate);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, certFile, objectPath, service, url{*parsedUrl}, id, name,
certificate](const boost::system::error_code& ec,
sdbusplus::message_t& m) {
@@ -656,7 +658,8 @@
{
BMCWEB_LOG_DEBUG("getCSR CertObjectPath{} CSRObjectPath={} service={}",
certObjPath, csrObjPath, service);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp,
certURI](const boost::system::error_code& ec, const std::string& csr) {
if (ec)
@@ -900,7 +903,8 @@
}
}
});
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec, const std::string&) {
if (ec)
{
@@ -1007,7 +1011,8 @@
std::shared_ptr<CertificateFile> certFile =
std::make_shared<CertificateFile>(certHttpBody);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, certFile](const boost::system::error_code& ec,
const std::string& objectPath) {
if (ec)
@@ -1122,7 +1127,8 @@
std::shared_ptr<CertificateFile> certFile =
std::make_shared<CertificateFile>(certHttpBody);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, certFile](const boost::system::error_code& ec,
const std::string& objectPath) {
if (ec)
@@ -1260,7 +1266,8 @@
std::shared_ptr<CertificateFile> certFile =
std::make_shared<CertificateFile>(certHttpBody);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, certFile](const boost::system::error_code& ec,
const std::string& objectPath) {
if (ec)
diff --git a/redfish-core/lib/chassis.hpp b/redfish-core/lib/chassis.hpp
index 879ae38..27a7dbc 100644
--- a/redfish-core/lib/chassis.hpp
+++ b/redfish-core/lib/chassis.hpp
@@ -153,7 +153,6 @@
*/
inline void getChassisState(std::shared_ptr<bmcweb::AsyncResp> asyncResp)
{
- // crow::connections::systemBus->async_method_call(
dbus::utility::getProperty<std::string>(
"xyz.openbmc_project.State.Chassis",
"/xyz/openbmc_project/state/chassis0",
diff --git a/redfish-core/lib/ethernet.hpp b/redfish-core/lib/ethernet.hpp
index 1e547e4..1031e3d 100644
--- a/redfish-core/lib/ethernet.hpp
+++ b/redfish-core/lib/ethernet.hpp
@@ -7,7 +7,6 @@
#include "app.hpp"
#include "async_resp.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "generated/enums/ethernet_interface.hpp"
@@ -756,7 +755,8 @@
const std::string& ipHash,
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec) {
if (ec)
{
@@ -792,8 +792,8 @@
}
};
- crow::connections::systemBus->async_method_call(
- std::move(createIpHandler), "xyz.openbmc_project.Network",
+ dbus::utility::async_method_call(
+ asyncResp, std::move(createIpHandler), "xyz.openbmc_project.Network",
"/xyz/openbmc_project/network/" + ifaceId,
"xyz.openbmc_project.Network.IP.Create", "IP",
"xyz.openbmc_project.Network.IP.Protocol.IPv4", address, prefixLength,
@@ -820,7 +820,8 @@
const std::string& gateway,
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, version, ifaceId, address, prefixLength,
gateway](const boost::system::error_code& ec) {
if (ec)
@@ -829,7 +830,8 @@
}
std::string protocol = "xyz.openbmc_project.Network.IP.Protocol.";
protocol += version == IpVersion::IpV4 ? "IPv4" : "IPv6";
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec2) {
if (ec2)
{
@@ -918,9 +920,9 @@
};
// Passing null for gateway, as per redfish spec IPv6StaticAddresses
// object does not have associated gateway property
- crow::connections::systemBus->async_method_call(
- std::move(createIpHandler), "xyz.openbmc_project.Network", path,
- "xyz.openbmc_project.Network.IP.Create", "IP",
+ dbus::utility::async_method_call(
+ asyncResp, std::move(createIpHandler), "xyz.openbmc_project.Network",
+ path, "xyz.openbmc_project.Network.IP.Create", "IP",
"xyz.openbmc_project.Network.IP.Protocol.IPv6", address, prefixLength,
"");
}
@@ -941,7 +943,8 @@
sdbusplus::message::object_path path("/xyz/openbmc_project/network");
path /= ifaceId;
path /= gatewayId;
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec) {
if (ec)
{
@@ -973,10 +976,11 @@
messages::internalError(asyncResp->res);
}
};
- crow::connections::systemBus->async_method_call(
- std::move(createIpHandler), "xyz.openbmc_project.Network", path,
- "xyz.openbmc_project.Network.StaticGateway.Create", "StaticGateway",
- gateway, "xyz.openbmc_project.Network.IP.Protocol.IPv6");
+ dbus::utility::async_method_call(
+ asyncResp, std::move(createIpHandler), "xyz.openbmc_project.Network",
+ path, "xyz.openbmc_project.Network.StaticGateway.Create",
+ "StaticGateway", gateway,
+ "xyz.openbmc_project.Network.IP.Protocol.IPv6");
}
/**
@@ -998,7 +1002,8 @@
sdbusplus::message::object_path path("/xyz/openbmc_project/network");
path /= ifaceId;
path /= gatewayId;
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, ifaceId, gateway](const boost::system::error_code& ec) {
if (ec)
{
@@ -2248,7 +2253,8 @@
std::string vlanInterface =
parentInterface + "_" + std::to_string(vlanId);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, parentInterfaceUri,
vlanInterface](const boost::system::error_code& ec,
const sdbusplus::message_t& m) {
@@ -2501,7 +2507,8 @@
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, ifaceId](const boost::system::error_code& ec,
const sdbusplus::message_t& m) {
afterDelete(asyncResp, ifaceId, ec, m);
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
index fa003e3..66f49ab 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
@@ -4,7 +4,6 @@
#pragma once
#include "app.hpp"
#include "async_resp.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "event_service_manager.hpp"
@@ -298,7 +297,8 @@
"/redfish/v1/EventService/Subscriptions/{}" + id);
memberArray.emplace_back(std::move(member));
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec,
const dbus::utility::ManagedObjectType& resp) {
doSubscriptionCollection(ec, asyncResp, resp);
diff --git a/redfish-core/lib/fan.hpp b/redfish-core/lib/fan.hpp
index 06dc187..baa25b3 100644
--- a/redfish-core/lib/fan.hpp
+++ b/redfish-core/lib/fan.hpp
@@ -12,6 +12,7 @@
#include "query.hpp"
#include "registries/privilege_registry.hpp"
#include "utils/chassis_utils.hpp"
+#include "utils/dbus_utils.hpp"
#include <asm-generic/errno.h>
diff --git a/redfish-core/lib/led.hpp b/redfish-core/lib/led.hpp
index e868bf3..b74dc4d 100644
--- a/redfish-core/lib/led.hpp
+++ b/redfish-core/lib/led.hpp
@@ -20,6 +20,7 @@
#include <array>
#include <functional>
#include <memory>
+#include <string>
#include <string_view>
#include <utility>
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index cde992b..8d29341 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -590,8 +590,8 @@
}
};
- crow::connections::systemBus->async_method_call(
- respHandler, "xyz.openbmc_project.Dump.Manager",
+ dbus::utility::async_method_call(
+ asyncResp, respHandler, "xyz.openbmc_project.Dump.Manager",
std::format("{}/entry/{}", getDumpPath(dumpType), entryID),
"xyz.openbmc_project.Object.Delete", "Delete");
}
@@ -706,9 +706,10 @@
downloadEntryCallback(asyncResp, entryID, dumpType, ec, unixfd);
};
- crow::connections::systemBus->async_method_call(
- std::move(downloadDumpEntryHandler), "xyz.openbmc_project.Dump.Manager",
- dumpEntryPath, "xyz.openbmc_project.Dump.Entry", "GetFileHandle");
+ dbus::utility::async_method_call(
+ asyncResp, std::move(downloadDumpEntryHandler),
+ "xyz.openbmc_project.Dump.Manager", dumpEntryPath,
+ "xyz.openbmc_project.Dump.Entry", "GetFileHandle");
}
inline void downloadEventLogEntry(
@@ -741,9 +742,10 @@
downloadEntryCallback(asyncResp, entryID, dumpType, ec, unixfd);
};
- crow::connections::systemBus->async_method_call(
- std::move(downloadEventLogEntryHandler), "xyz.openbmc_project.Logging",
- entryPath, "xyz.openbmc_project.Logging.Entry", "GetEntry");
+ dbus::utility::async_method_call(
+ asyncResp, std::move(downloadEventLogEntryHandler),
+ "xyz.openbmc_project.Logging", entryPath,
+ "xyz.openbmc_project.Logging.Entry", "GetEntry");
}
inline DumpCreationProgress mapDbusStatusToDumpProgress(
@@ -814,7 +816,8 @@
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, payload = std::move(payload), createdObjPath,
dumpEntryPath{std::move(dumpEntryPath)},
dumpId](const boost::system::error_code& ec,
@@ -1021,7 +1024,8 @@
"xyz.openbmc_project.Common.OriginatedBy.OriginatorTypes.Client");
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, payload(task::Payload(req)),
dumpPath](const boost::system::error_code& ec,
const sdbusplus::message_t& msg,
@@ -1079,7 +1083,8 @@
inline void clearDump(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
const std::string& dumpType)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec) {
if (ec)
{
@@ -1316,7 +1321,8 @@
}
// Reload rsyslog so it knows to start new log files
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec) {
if (ec)
{
@@ -1851,8 +1857,8 @@
};
// Make call to Logging service to request Delete Log
- crow::connections::systemBus->async_method_call(
- respHandler, "xyz.openbmc_project.Logging",
+ dbus::utility::async_method_call(
+ asyncResp, respHandler, "xyz.openbmc_project.Logging",
"/xyz/openbmc_project/logging/entry/" + entryID,
"xyz.openbmc_project.Object.Delete", "Delete");
}
@@ -2658,7 +2664,8 @@
systemName);
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec,
const std::string&) {
if (ec)
@@ -3109,9 +3116,9 @@
task->payload.emplace(std::move(payload));
};
- crow::connections::systemBus->async_method_call(
- std::move(collectCrashdumpCallback), crashdumpObject,
- crashdumpPath, iface, method);
+ dbus::utility::async_method_call(
+ asyncResp, std::move(collectCrashdumpCallback),
+ crashdumpObject, crashdumpPath, iface, method);
});
}
@@ -3136,8 +3143,8 @@
};
// Make call to Logging service to request Clear Log
- crow::connections::systemBus->async_method_call(
- respHandler, "xyz.openbmc_project.Logging",
+ dbus::utility::async_method_call(
+ asyncResp, respHandler, "xyz.openbmc_project.Logging",
"/xyz/openbmc_project/logging",
"xyz.openbmc_project.Collection.DeleteAll", "DeleteAll");
}
diff --git a/redfish-core/lib/metric_report.hpp b/redfish-core/lib/metric_report.hpp
index 5312950..4814059 100644
--- a/redfish-core/lib/metric_report.hpp
+++ b/redfish-core/lib/metric_report.hpp
@@ -5,6 +5,7 @@
#include "app.hpp"
#include "async_resp.hpp"
#include "dbus_singleton.hpp"
+#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "http_request.hpp"
#include "logging.hpp"
@@ -116,7 +117,8 @@
return;
}
const std::string reportPath = telemetry::getDbusReportPath(id);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, id,
reportPath](const boost::system::error_code& ec) {
if (ec.value() == EBADR ||
diff --git a/redfish-core/lib/metric_report_definition.hpp b/redfish-core/lib/metric_report_definition.hpp
index 4215b23..06e8075 100644
--- a/redfish-core/lib/metric_report_definition.hpp
+++ b/redfish-core/lib/metric_report_definition.hpp
@@ -840,7 +840,8 @@
std::move(sensorParams), metric.collectionFunction,
metric.collectionTimeScope, metric.collectionDuration);
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, args](const boost::system::error_code& ec,
const sdbusplus::message_t& msg,
const std::string& /*arg1*/) {
@@ -958,7 +959,8 @@
}
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, reportId](const boost::system::error_code& ec,
const sdbusplus::message_t& msg) {
afterSetReadingParams(asyncResp, reportId, ec, msg);
@@ -1025,7 +1027,8 @@
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, std::string_view id,
bool enabled)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, id = std::string(id)](const boost::system::error_code& ec) {
if (!verifyCommonErrors(asyncResp->res, id, ec))
{
@@ -1102,7 +1105,8 @@
recurrenceInterval = static_cast<uint64_t>(durationNum->count());
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, id = std::string(id)](const boost::system::error_code& ec,
const sdbusplus::message_t& msg) {
afterSetReportingProperties(asyncResp, id, ec, msg);
@@ -1153,7 +1157,8 @@
"ReportUpdates");
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, id = std::string(id)](const boost::system::error_code& ec,
const sdbusplus::message_t& msg) {
afterSetReportUpdates(asyncResp, id, ec, msg);
@@ -1202,7 +1207,8 @@
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, id = std::string(id)](const boost::system::error_code& ec,
const sdbusplus::message_t& msg) {
afterSetReportActions(asyncResp, id, ec, msg);
@@ -1427,7 +1433,8 @@
const std::string reportPath = getDbusReportPath(id);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp,
reportId = std::string(id)](const boost::system::error_code& ec) {
if (!verifyCommonErrors(asyncResp->res, reportId, ec))
@@ -1541,7 +1548,8 @@
const std::string reportPath = telemetry::getDbusReportPath(id);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, id](const boost::system::error_code& ec) {
/*
* boost::system::errc and std::errc are missing value
diff --git a/redfish-core/lib/network_protocol.hpp b/redfish-core/lib/network_protocol.hpp
index 19f6639..f3a5114 100644
--- a/redfish-core/lib/network_protocol.hpp
+++ b/redfish-core/lib/network_protocol.hpp
@@ -7,7 +7,6 @@
#include "app.hpp"
#include "async_resp.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "generated/enums/resource.hpp"
@@ -284,8 +283,8 @@
auto callback = [asyncResp](const boost::system::error_code& ec) {
afterSetNTP(asyncResp, ec);
};
- crow::connections::systemBus->async_method_call(
- std::move(callback), "org.freedesktop.timedate1",
+ dbus::utility::async_method_call(
+ asyncResp, std::move(callback), "org.freedesktop.timedate1",
"/org/freedesktop/timedate1", "org.freedesktop.timedate1", "SetNTP",
ntpEnabled, interactive);
}
diff --git a/redfish-core/lib/openbmc/openbmc_managers.hpp b/redfish-core/lib/openbmc/openbmc_managers.hpp
index 8bd5625..4e726e9 100644
--- a/redfish-core/lib/openbmc/openbmc_managers.hpp
+++ b/redfish-core/lib/openbmc/openbmc_managers.hpp
@@ -7,6 +7,7 @@
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "http_request.hpp"
+#include "io_context_singleton.hpp"
#include "logging.hpp"
#include "redfish.hpp"
#include "utils/dbus_utils.hpp"
@@ -591,7 +592,8 @@
BMCWEB_LOG_DEBUG("del {} {}", path, iface);
// delete interface
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ response,
[response, path](const boost::system::error_code& ec) {
if (ec)
{
@@ -1104,7 +1106,7 @@
~GetPIDValues()
{
- boost::asio::post(crow::connections::systemBus->get_io_context(),
+ boost::asio::post(getIoContext(),
std::bind_front(&processingComplete, asyncResp,
std::move(complete)));
}
@@ -1385,7 +1387,8 @@
{
for (const auto& property : output)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[response,
propertyName{std::string(property.first)}](
const boost::system::error_code& ec) {
@@ -1432,7 +1435,8 @@
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[response](const boost::system::error_code& ec) {
if (ec)
{
diff --git a/redfish-core/lib/redfish_util.hpp b/redfish-core/lib/redfish_util.hpp
index 0b10a1b..ec905dd 100644
--- a/redfish-core/lib/redfish_util.hpp
+++ b/redfish-core/lib/redfish_util.hpp
@@ -4,6 +4,7 @@
#pragma once
#include "async_resp.hpp"
+#include "boost_formatters.hpp"
#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
@@ -100,7 +101,7 @@
protocolToDBus,
CallbackFunc&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[protocolToDBus, callback = std::forward<CallbackFunc>(callback)](
const boost::system::error_code& ec,
const std::vector<UnitStruct>& r) {
diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index 45400dd..d7aeed9 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -2843,7 +2843,8 @@
"xyz.openbmc_project.Control.Host.NMI";
constexpr const char* method = "NMI";
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec) {
if (ec)
{
diff --git a/redfish-core/lib/systems_logservices_postcodes.hpp b/redfish-core/lib/systems_logservices_postcodes.hpp
index 2285ab1..cd2cb8c 100644
--- a/redfish-core/lib/systems_logservices_postcodes.hpp
+++ b/redfish-core/lib/systems_logservices_postcodes.hpp
@@ -6,7 +6,6 @@
#include "app.hpp"
#include "async_resp.hpp"
-#include "dbus_singleton.hpp"
#include "dbus_utility.hpp"
#include "error_messages.hpp"
#include "generated/enums/log_service.hpp"
@@ -123,7 +122,8 @@
BMCWEB_LOG_DEBUG("Do delete all postcodes entries.");
// Make call to post-code service to request clear all
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec) {
if (ec)
{
@@ -341,7 +341,8 @@
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, entryId, bootIndex,
codeIndex](const boost::system::error_code& ec,
const boost::container::flat_map<
@@ -377,7 +378,8 @@
const uint16_t bootIndex, const uint16_t bootCount,
const uint64_t entryCount, size_t skip, size_t top)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, bootIndex, bootCount, entryCount, skip,
top](const boost::system::error_code& ec,
const boost::container::flat_map<
@@ -534,7 +536,8 @@
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, postCodeID, currentValue](
const boost::system::error_code& ec,
const std::vector<std::tuple<std::vector<uint8_t>,
diff --git a/redfish-core/lib/trigger.hpp b/redfish-core/lib/trigger.hpp
index f376752..75e8287 100644
--- a/redfish-core/lib/trigger.hpp
+++ b/redfish-core/lib/trigger.hpp
@@ -954,7 +954,8 @@
return;
}
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, id = ctx.id](const boost::system::error_code& ec,
const std::string& dbusPath) {
afterCreateTrigger(ec, dbusPath, asyncResp, id);
@@ -1052,7 +1053,8 @@
const std::string triggerPath =
telemetry::getDbusTriggerPath(id);
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, id](const boost::system::error_code& ec) {
if (ec.value() == EBADR)
{
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index 44c8777d..1e28dda5 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -844,7 +844,8 @@
const MemoryFileDescriptor& memfd, const std::string& applyTime,
const std::string& objectPath, const std::string& serviceName)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp, payload = std::move(payload),
objectPath](const boost::system::error_code& ec1,
const sdbusplus::message::object_path& retPath) mutable {
diff --git a/redfish-core/lib/virtual_media.hpp b/redfish-core/lib/virtual_media.hpp
index f67af8e9..c312ada 100644
--- a/redfish-core/lib/virtual_media.hpp
+++ b/redfish-core/lib/virtual_media.hpp
@@ -501,7 +501,8 @@
sdbusplus::message::object_path path(
"/xyz/openbmc_project/VirtualMedia/Legacy");
path /= name;
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec, bool success) {
if (ec)
{
@@ -670,7 +671,8 @@
// Legacy mount requires parameter with image
if (legacy)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec) {
if (ec)
{
@@ -685,7 +687,8 @@
}
else // proxy
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
+ asyncResp,
[asyncResp](const boost::system::error_code& ec) {
if (ec)
{
diff --git a/src/dbus_utility.cpp b/src/dbus_utility.cpp
index cdfd13c..54eb0aa 100644
--- a/src/dbus_utility.cpp
+++ b/src/dbus_utility.cpp
@@ -91,7 +91,7 @@
void checkDbusPathExists(const std::string& path,
std::function<void(bool)>&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[callback = std::move(callback)](const boost::system::error_code& ec,
const MapperGetObject& objectNames) {
callback(!ec && !objectNames.empty());
@@ -107,7 +107,7 @@
std::function<void(const boost::system::error_code&,
const MapperGetSubTreeResponse&)>&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[callback{std::move(callback)}](
const boost::system::error_code& ec,
const MapperGetSubTreeResponse& subtree) { callback(ec, subtree); },
@@ -123,7 +123,7 @@
std::function<void(const boost::system::error_code&,
const MapperGetSubTreePathsResponse&)>&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[callback{std::move(callback)}](
const boost::system::error_code& ec,
const MapperGetSubTreePathsResponse& subtreePaths) {
@@ -142,7 +142,7 @@
std::function<void(const boost::system::error_code&,
const MapperGetSubTreeResponse&)>&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[callback{std::move(callback)}](
const boost::system::error_code& ec,
const MapperGetSubTreeResponse& subtree) { callback(ec, subtree); },
@@ -159,7 +159,7 @@
std::function<void(const boost::system::error_code&,
const MapperGetSubTreePathsResponse&)>&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[callback{std::move(callback)}](
const boost::system::error_code& ec,
const MapperGetSubTreePathsResponse& subtreePaths) {
@@ -179,7 +179,7 @@
std::function<void(const boost::system::error_code&,
const MapperGetSubTreeResponse&)>&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[callback{std::move(callback)}](
const boost::system::error_code& ec,
const MapperGetSubTreeResponse& subtree) { callback(ec, subtree); },
@@ -197,7 +197,7 @@
std::function<void(const boost::system::error_code&,
const MapperGetSubTreePathsResponse&)>&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[callback{std::move(callback)}](
const boost::system::error_code& ec,
const MapperGetSubTreePathsResponse& subtreePaths) {
@@ -214,7 +214,7 @@
std::function<void(const boost::system::error_code&,
const MapperGetObject&)>&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[callback{std::move(callback)}](const boost::system::error_code& ec,
const MapperGetObject& object) {
callback(ec, object);
@@ -239,7 +239,7 @@
std::function<void(const boost::system::error_code&,
const ManagedObjectType&)>&& callback)
{
- crow::connections::systemBus->async_method_call(
+ dbus::utility::async_method_call(
[callback{std::move(callback)}](const boost::system::error_code& ec,
const ManagedObjectType& objects) {
callback(ec, objects);