diff options
author | Tom Joseph <tomjoseph@in.ibm.com> | 2017-07-07 20:14:02 +0530 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-07-19 19:54:42 +0000 |
commit | 232f5298dbc62f178b2c23aa474479ea2386b5d9 (patch) | |
tree | 3e554139861f307a5ef92a5d34bc43df1f56d660 /selutility.cpp | |
parent | 2f05bb56787910da33f5ed2519fc84aed5af88d8 (diff) | |
download | phosphor-host-ipmid-232f5298dbc62f178b2c23aa474479ea2386b5d9.tar.gz phosphor-host-ipmid-232f5298dbc62f178b2c23aa474479ea2386b5d9.zip |
Add API to Read the DBUS logging entry object paths
Change-Id: Ib1a9693dea5fa614fe3e4952f32778d8dde225d4
Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
Diffstat (limited to 'selutility.cpp')
-rw-r--r-- | selutility.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/selutility.cpp b/selutility.cpp index 3f9d9ab..f52d51e 100644 --- a/selutility.cpp +++ b/selutility.cpp @@ -1,5 +1,6 @@ #include <chrono> #include <vector> +#include <experimental/filesystem> #include <phosphor-logging/elog-errors.hpp> #include "host-ipmid/ipmid-api.h" #include "xyz/openbmc_project/Common/error.hpp" @@ -214,6 +215,43 @@ std::chrono::seconds getEntryTimeStamp(const std::string& objPath) return std::chrono::duration_cast<std::chrono::seconds>(chronoTimeStamp); } +void readLoggingObjectPaths(ObjectPaths& paths) +{ + sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()}; + auto depth = 0; + paths.clear(); + + auto mapperCall = bus.new_method_call(mapperBusName, + mapperObjPath, + mapperIntf, + "GetSubTreePaths"); + mapperCall.append(logBasePath); + mapperCall.append(depth); + mapperCall.append(ObjectPaths({logEntryIntf})); + + auto reply = bus.call(mapperCall); + if (reply.is_method_error()) + { + log<level::INFO>("Error in reading logging entry object paths"); + } + else + { + reply.read(paths); + + std::sort(paths.begin(), paths.end(), [](const std::string& a, + const std::string& b) + { + namespace fs = std::experimental::filesystem; + fs::path pathA(a); + fs::path pathB(b); + auto idA = std::stoul(pathA.filename().string()); + auto idB = std::stoul(pathB.filename().string()); + + return idA < idB; + }); + } +} + } // namespace sel } // namespace ipmi |