From f8db58ca9b57df4e97d5775a9038011019299cb3 Mon Sep 17 00:00:00 2001 From: roly Date: Thu, 14 Nov 2024 19:09:27 +0800 Subject: [PATCH] Add ReleaseDate for BMC inventory --- redfish-core/lib/update_service.hpp | 47 +++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp index af2725aa..cc3d939a 100644 --- a/redfish-core/lib/update_service.hpp +++ b/redfish-core/lib/update_service.hpp @@ -892,6 +892,45 @@ inline static void } } +inline void + getSoftwareReleaseDate(const std::shared_ptr& asyncResp, + const std::string& service, const std::string& path, + const std::string& purpose) +{ + if (purpose == sw_util::bmcPurpose) + { + sdbusplus::asio::getProperty( + *crow::connections::systemBus, service, path, + "xyz.openbmc_project.Software.ReleaseDate", "ReleaseDate", + [asyncResp, path](const boost::system::error_code& ec, + const std::string& relDate) { + if (ec) + { + if (ec.value() == + boost::system::linux_error::bad_request_descriptor) + { + BMCWEB_LOG_DEBUG("Priority do not available in {} {}", path, + ec.message()); + } + else + { + BMCWEB_LOG_ERROR( + "Error getting Priority property from {}: {}", path, + ec.message()); + messages::internalError(asyncResp->res); + } + return; + } + + asyncResp->res.jsonValue["ReleaseDate"] = relDate; + }); + } + else + { + BMCWEB_LOG_DEBUG("Unknown software purpose {}", purpose); + } +} + inline void getSoftwareVersion(const std::shared_ptr& asyncResp, const std::string& service, const std::string& path, @@ -900,7 +939,7 @@ inline void sdbusplus::asio::getAllProperties( *crow::connections::systemBus, service, path, "xyz.openbmc_project.Software.Version", - [asyncResp, + [asyncResp, service, path, swId](const boost::system::error_code& ec, const dbus::utility::DBusPropertiesMap& propertiesList) { if (ec) @@ -961,7 +1000,8 @@ inline void std::string formatDesc = swInvPurpose->substr(endDesc); asyncResp->res.jsonValue["Description"] = formatDesc + " image"; getRelatedItems(asyncResp, *swInvPurpose); - }); + getSoftwareReleaseDate(asyncResp, service, path, *swInvPurpose); + }); } inline void requestRoutesSoftwareInventory(App& app) @@ -1003,7 +1043,8 @@ inline void requestRoutesSoftwareInventory(App& app) std::string, std::vector>>>& obj : subtree) { - if (!obj.first.ends_with(*swId)) + if (sdbusplus::message::object_path(obj.first).filename() != + *swId) { continue; } -- 2.25.1