summaryrefslogtreecommitdiffstats
path: root/selutility.cpp
diff options
context:
space:
mode:
authorTom Joseph <tomjoseph@in.ibm.com>2017-07-07 20:14:02 +0530
committerPatrick Williams <patrick@stwcx.xyz>2017-07-19 19:54:42 +0000
commit232f5298dbc62f178b2c23aa474479ea2386b5d9 (patch)
tree3e554139861f307a5ef92a5d34bc43df1f56d660 /selutility.cpp
parent2f05bb56787910da33f5ed2519fc84aed5af88d8 (diff)
downloadphosphor-host-ipmid-232f5298dbc62f178b2c23aa474479ea2386b5d9.zip
phosphor-host-ipmid-232f5298dbc62f178b2c23aa474479ea2386b5d9.tar.gz
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.cpp38
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
OpenPOWER on IntegriCloud