Redfish: Support for DownloadLog Action
Supports offloading a dump to the client
Tested-By:
* curl -k -H "X-Auth-Token: $bmc_token" -X GET
https://${bmc}/redfish/v1/Managers/bmc/LogServices/
Dump/attachment/<dump-id>
* curl -k -H "X-Auth-Token: $bmc_token" -X GET
https://${bmc}/redfish/v1/Systems/system/LogServices/
Dump/attachment/<dump-id>
Signed-off-by: Asmitha Karunanithi <asmitk01@in.ibm.com>
Change-Id: I99bbb50bc171408273744f89220a46bfe64ba4c4
diff --git a/redfish-core/include/redfish.hpp b/redfish-core/include/redfish.hpp
index 2e568da..bdec359 100644
--- a/redfish-core/include/redfish.hpp
+++ b/redfish-core/include/redfish.hpp
@@ -116,6 +116,7 @@
nodes.emplace_back(std::make_unique<BMCDumpEntryCollection>(app));
nodes.emplace_back(std::make_unique<BMCDumpEntry>(app));
nodes.emplace_back(std::make_unique<BMCDumpCreate>(app));
+ nodes.emplace_back(std::make_unique<BMCDumpEntryDownload>(app));
nodes.emplace_back(std::make_unique<BMCDumpClear>(app));
#endif
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index b572bbf..aed37b0 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -2140,6 +2140,36 @@
}
};
+class BMCDumpEntryDownload : public Node
+{
+ public:
+ BMCDumpEntryDownload(CrowApp& app) :
+ Node(app, "/redfish/v1/Managers/bmc/LogServices/Dump/attachment/<str>/",
+ std::string())
+ {
+ entityPrivileges = {
+ {boost::beast::http::verb::get, {{"Login"}}},
+ {boost::beast::http::verb::head, {{"Login"}}},
+ {boost::beast::http::verb::patch, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::put, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::delete_, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::post, {{"ConfigureManager"}}}};
+ }
+
+ private:
+ void doGet(crow::Response& res, const crow::Request& req,
+ const std::vector<std::string>& params) override
+ {
+ if (params.size() != 1)
+ {
+ messages::internalError(res);
+ return;
+ }
+ const std::string& entryID = params[0];
+ crow::obmc_dump::handleDumpOffloadUrl(req, res, entryID);
+ }
+};
+
class BMCDumpClear : public Node
{
public:
@@ -2319,20 +2349,21 @@
public:
SystemDumpEntryDownload(CrowApp& app) :
Node(app,
- "/redfish/v1/Systems/system/LogServices/System/Entries/<str>/"
- "Actions/"
- "LogEntry.DownloadLog/",
+ "/redfish/v1/Systems/system/LogServices/Dump/attachment/<str>/",
std::string())
{
entityPrivileges = {
{boost::beast::http::verb::get, {{"Login"}}},
{boost::beast::http::verb::head, {{"Login"}}},
+ {boost::beast::http::verb::patch, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::put, {{"ConfigureManager"}}},
+ {boost::beast::http::verb::delete_, {{"ConfigureManager"}}},
{boost::beast::http::verb::post, {{"ConfigureManager"}}}};
}
private:
- void doPost(crow::Response& res, const crow::Request& req,
- const std::vector<std::string>& params) override
+ void doGet(crow::Response& res, const crow::Request& req,
+ const std::vector<std::string>& params) override
{
if (params.size() != 1)
{