pldmd: Migrate instance ID allocation to pldm::InstanceIdDb
This removes use of `pldm::dbus_api::Requester` from around the
code-base. This makes progress towards removing the DBus API entirely
once all its consumers are converted to the libpldm instance ID APIs.
There was never a good reason for the code using the class to have
knowledge that it was related to DBus anyway, so this is, in-effect, a
double clean up improving separation of concerns.
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I2d9397cae1b3c8c251c32e36ca520aad9c9b8cf6
diff --git a/fw-update/device_updater.cpp b/fw-update/device_updater.cpp
index 4009a48..20bca0c 100644
--- a/fw-update/device_updater.cpp
+++ b/fw-update/device_updater.cpp
@@ -19,7 +19,7 @@
void DeviceUpdater::startFwUpdateFlow()
{
- auto instanceId = updateManager->requester.getInstanceId(eid);
+ auto instanceId = updateManager->instanceIdDb.next(eid);
// NumberOfComponents
const auto& applicableComponents =
std::get<ApplicableComponents>(fwDeviceIDRecord);
@@ -48,7 +48,7 @@
sizeof(struct pldm_request_update_req) + compImgSetVerStrInfo.length);
if (rc)
{
- updateManager->requester.markFree(eid, instanceId);
+ updateManager->instanceIdDb.free(eid, instanceId);
error("encode_request_update_req failed, EID = {EID}, RC = {RC}", "EID",
unsigned(eid), "RC", rc);
// Handle error scenario
@@ -107,7 +107,7 @@
{
pldmRequest.reset();
- auto instanceId = updateManager->requester.getInstanceId(eid);
+ auto instanceId = updateManager->instanceIdDb.next(eid);
// TransferFlag
const auto& applicableComponents =
std::get<ApplicableComponents>(fwDeviceIDRecord);
@@ -170,7 +170,7 @@
sizeof(pldm_pass_component_table_req) + compVerStrInfo.length);
if (rc)
{
- updateManager->requester.markFree(eid, instanceId);
+ updateManager->instanceIdDb.free(eid, instanceId);
error("encode_pass_component_table_req failed, EID = {EID}, RC = {RC}",
"EID", unsigned(eid), "RC", rc);
// Handle error scenario
@@ -249,7 +249,7 @@
{
pldmRequest.reset();
- auto instanceId = updateManager->requester.getInstanceId(eid);
+ auto instanceId = updateManager->instanceIdDb.next(eid);
const auto& applicableComponents =
std::get<ApplicableComponents>(fwDeviceIDRecord);
const auto& comp = compImageInfos[applicableComponents[offset]];
@@ -297,7 +297,7 @@
sizeof(pldm_update_component_req) + compVerStrInfo.length);
if (rc)
{
- updateManager->requester.markFree(eid, instanceId);
+ updateManager->instanceIdDb.free(eid, instanceId);
error("encode_update_component_req failed, EID={EID}, RC = {RC}", "EID",
unsigned(eid), "RC", rc);
// Handle error scenario
@@ -631,7 +631,7 @@
void DeviceUpdater::sendActivateFirmwareRequest()
{
pldmRequest.reset();
- auto instanceId = updateManager->requester.getInstanceId(eid);
+ auto instanceId = updateManager->instanceIdDb.next(eid);
Request request(sizeof(pldm_msg_hdr) +
sizeof(struct pldm_activate_firmware_req));
auto requestMsg = reinterpret_cast<pldm_msg*>(request.data());
@@ -641,7 +641,7 @@
sizeof(pldm_activate_firmware_req));
if (rc)
{
- updateManager->requester.markFree(eid, instanceId);
+ updateManager->instanceIdDb.free(eid, instanceId);
error("encode_activate_firmware_req failed, EID={EID}, RC = {RC}",
"EID", unsigned(eid), "RC", rc);
}
diff --git a/fw-update/inventory_manager.cpp b/fw-update/inventory_manager.cpp
index ea80e69..f5a797b 100644
--- a/fw-update/inventory_manager.cpp
+++ b/fw-update/inventory_manager.cpp
@@ -19,7 +19,7 @@
{
for (const auto& eid : eids)
{
- auto instanceId = requester.getInstanceId(eid);
+ auto instanceId = instanceIdDb.next(eid);
Request requestMsg(sizeof(pldm_msg_hdr) +
PLDM_QUERY_DEVICE_IDENTIFIERS_REQ_BYTES);
auto request = reinterpret_cast<pldm_msg*>(requestMsg.data());
@@ -27,7 +27,7 @@
instanceId, PLDM_QUERY_DEVICE_IDENTIFIERS_REQ_BYTES, request);
if (rc)
{
- requester.markFree(eid, instanceId);
+ instanceIdDb.free(eid, instanceId);
error(
"encode_query_device_identifiers_req failed, EID={EID}, RC = {RC}",
"EID", unsigned(eid), "RC", rc);
@@ -150,7 +150,7 @@
void InventoryManager::sendGetFirmwareParametersRequest(mctp_eid_t eid)
{
- auto instanceId = requester.getInstanceId(eid);
+ auto instanceId = instanceIdDb.next(eid);
Request requestMsg(sizeof(pldm_msg_hdr) +
PLDM_GET_FIRMWARE_PARAMETERS_REQ_BYTES);
auto request = reinterpret_cast<pldm_msg*>(requestMsg.data());
@@ -158,7 +158,7 @@
instanceId, PLDM_GET_FIRMWARE_PARAMETERS_REQ_BYTES, request);
if (rc)
{
- requester.markFree(eid, instanceId);
+ instanceIdDb.free(eid, instanceId);
error("encode_get_firmware_parameters_req failed, EID={EID}, RC = {RC}",
"EID", unsigned(eid), "RC", rc);
return;
diff --git a/fw-update/inventory_manager.hpp b/fw-update/inventory_manager.hpp
index 1bca43f..ae5030f 100644
--- a/fw-update/inventory_manager.hpp
+++ b/fw-update/inventory_manager.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "common/types.hpp"
-#include "pldmd/dbus_impl_requester.hpp"
+#include "pldmd/instance_id.hpp"
#include "requester/handler.hpp"
#include <libpldm/pldm.h>
@@ -33,7 +33,7 @@
/** @brief Constructor
*
* @param[in] handler - PLDM request handler
- * @param[in] requester - Managing instance ID for PLDM requests
+ * @param[in] instanceIdDb - Managing instance ID for PLDM requests
* @param[out] descriptorMap - Populate the firmware identifers for the
* FDs managed by the BMC.
* @param[out] componentInfoMap - Populate the component info for the FDs
@@ -41,10 +41,10 @@
*/
explicit InventoryManager(
pldm::requester::Handler<pldm::requester::Request>& handler,
- pldm::dbus_api::Requester& requester, DescriptorMap& descriptorMap,
+ InstanceIdDb& instanceIdDb, DescriptorMap& descriptorMap,
ComponentInfoMap& componentInfoMap) :
handler(handler),
- requester(requester), descriptorMap(descriptorMap),
+ instanceIdDb(instanceIdDb), descriptorMap(descriptorMap),
componentInfoMap(componentInfoMap)
{}
@@ -93,8 +93,8 @@
/** @brief PLDM request handler */
pldm::requester::Handler<pldm::requester::Request>& handler;
- /** @brief D-Bus API for managing instance ID*/
- pldm::dbus_api::Requester& requester;
+ /** @brief Instance ID database for managing instance ID*/
+ InstanceIdDb& instanceIdDb;
/** @brief Device identifiers of the managed FDs */
DescriptorMap& descriptorMap;
diff --git a/fw-update/manager.hpp b/fw-update/manager.hpp
index 8c2f2e1..46a3285 100644
--- a/fw-update/manager.hpp
+++ b/fw-update/manager.hpp
@@ -4,7 +4,7 @@
#include "common/types.hpp"
#include "device_updater.hpp"
#include "inventory_manager.hpp"
-#include "pldmd/dbus_impl_requester.hpp"
+#include "pldmd/instance_id.hpp"
#include "requester/handler.hpp"
#include "update_manager.hpp"
@@ -19,8 +19,6 @@
namespace fw_update
{
-using namespace pldm::dbus_api;
-
/** @class Manager
*
* This class handles all the aspects of the PLDM FW update specification for
@@ -42,9 +40,9 @@
*/
explicit Manager(Event& event,
requester::Handler<requester::Request>& handler,
- Requester& requester) :
- inventoryMgr(handler, requester, descriptorMap, componentInfoMap),
- updateManager(event, handler, requester, descriptorMap,
+ pldm::InstanceIdDb& instanceIdDb) :
+ inventoryMgr(handler, instanceIdDb, descriptorMap, componentInfoMap),
+ updateManager(event, handler, instanceIdDb, descriptorMap,
componentInfoMap)
{}
diff --git a/fw-update/test/device_updater_test.cpp b/fw-update/test/device_updater_test.cpp
index 2e237e3..ba2b16f 100644
--- a/fw-update/test/device_updater_test.cpp
+++ b/fw-update/test/device_updater_test.cpp
@@ -1,7 +1,7 @@
#include "common/utils.hpp"
#include "fw-update/device_updater.hpp"
#include "fw-update/package_parser.hpp"
-#include "pldmd/dbus_impl_requester.hpp"
+#include "pldmd/instance_id.hpp"
#include "requester/handler.hpp"
#include <libpldm/firmware_update.h>
diff --git a/fw-update/test/inventory_manager_test.cpp b/fw-update/test/inventory_manager_test.cpp
index 1f7d142..3876563 100644
--- a/fw-update/test/inventory_manager_test.cpp
+++ b/fw-update/test/inventory_manager_test.cpp
@@ -16,18 +16,15 @@
protected:
InventoryManagerTest() :
event(sdeventplus::Event::get_default()), instanceIdDb(),
- dbusImplRequester(pldm::utils::DBusHandler::getBus(),
- "/xyz/openbmc_project/pldm", instanceIdDb),
- reqHandler(fd, event, dbusImplRequester, false, 90000, seconds(1), 2,
+ reqHandler(fd, event, instanceIdDb, false, 90000, seconds(1), 2,
milliseconds(100)),
- inventoryManager(reqHandler, dbusImplRequester, outDescriptorMap,
+ inventoryManager(reqHandler, instanceIdDb, outDescriptorMap,
outComponentInfoMap)
{}
int fd = -1;
sdeventplus::Event event;
TestInstanceIdDb instanceIdDb;
- pldm::dbus_api::Requester dbusImplRequester;
requester::Handler<requester::Request> reqHandler;
InventoryManager inventoryManager;
DescriptorMap outDescriptorMap{};
diff --git a/fw-update/update_manager.hpp b/fw-update/update_manager.hpp
index 64cf222..00ddc0c 100644
--- a/fw-update/update_manager.hpp
+++ b/fw-update/update_manager.hpp
@@ -3,7 +3,7 @@
#include "common/types.hpp"
#include "device_updater.hpp"
#include "package_parser.hpp"
-#include "pldmd/dbus_impl_requester.hpp"
+#include "pldmd/instance_id.hpp"
#include "requester/handler.hpp"
#include "watch.hpp"
@@ -24,7 +24,6 @@
using namespace sdeventplus;
using namespace sdeventplus::source;
-using namespace pldm::dbus_api;
using namespace pldm;
using DeviceIDRecordOffset = size_t;
@@ -48,11 +47,11 @@
explicit UpdateManager(
Event& event,
pldm::requester::Handler<pldm::requester::Request>& handler,
- Requester& requester, const DescriptorMap& descriptorMap,
+ InstanceIdDb& instanceIdDb, const DescriptorMap& descriptorMap,
const ComponentInfoMap& componentInfoMap) :
event(event),
- handler(handler), requester(requester), descriptorMap(descriptorMap),
- componentInfoMap(componentInfoMap),
+ handler(handler), instanceIdDb(instanceIdDb),
+ descriptorMap(descriptorMap), componentInfoMap(componentInfoMap),
watch(event.get(),
std::bind_front(&UpdateManager::processPackage, this))
{}
@@ -96,7 +95,7 @@
Event& event; //!< reference to PLDM daemon's main event loop
/** @brief PLDM request handler */
pldm::requester::Handler<pldm::requester::Request>& handler;
- Requester& requester; //!< reference to Requester object
+ InstanceIdDb& instanceIdDb; //!< reference to an InstanceIdDb
private:
/** @brief Device identifiers of the managed FDs */