Simplify task service code
This code repeats itself a lot. Reduce complexity.
Tested:
```
curl -vvvv -k --http1.1 --user "root:0penBmc" -X POST "https://192.168.7.2/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData" -H "Content-Type: application/json" -d '{"DiagnosticDataType": "Manager"}'
```
Starts a dump, and operates as expected.
Change-Id: I36000aababfc842845ba0d2103d3f6cd79a12385
Signed-off-by: Ed Tanous <ed@tanous.net>
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 045ad8c..5abab9d 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -944,8 +944,8 @@
return true;
}
- void sendEvent(nlohmann::json eventMessage, const std::string& origin,
- const std::string& resType)
+ void sendEvent(nlohmann::json eventMessage, std::string_view origin,
+ std::string_view resType)
{
if (!serviceEnabled || (noOfEventLogSubscribers == 0U))
{
diff --git a/redfish-core/lib/task.hpp b/redfish-core/lib/task.hpp
index a2959b8..09c92d1 100644
--- a/redfish-core/lib/task.hpp
+++ b/redfish-core/lib/task.hpp
@@ -199,9 +199,6 @@
static void sendTaskEvent(std::string_view state, size_t index)
{
- std::string origin = "/redfish/v1/TaskService/Tasks/" +
- std::to_string(index);
- std::string resType = "Task";
// TaskState enums which should send out an event are:
// "Starting" = taskResumed
// "Running" = taskStarted
@@ -213,59 +210,50 @@
// "Killed" = taskRemoved
// "Exception" = taskCompletedWarning
// "Cancelled" = taskCancelled
+ nlohmann::json event;
+ std::string indexStr = std::to_string(index);
if (state == "Starting")
{
- redfish::EventServiceManager::getInstance().sendEvent(
- redfish::messages::taskResumed(std::to_string(index)), origin,
- resType);
+ event = redfish::messages::taskResumed(indexStr);
}
else if (state == "Running")
{
- redfish::EventServiceManager::getInstance().sendEvent(
- redfish::messages::taskStarted(std::to_string(index)), origin,
- resType);
+ event = redfish::messages::taskStarted(indexStr);
}
else if ((state == "Suspended") || (state == "Interrupted") ||
(state == "Pending"))
{
- redfish::EventServiceManager::getInstance().sendEvent(
- redfish::messages::taskPaused(std::to_string(index)), origin,
- resType);
+ event = redfish::messages::taskPaused(indexStr);
}
else if (state == "Stopping")
{
- redfish::EventServiceManager::getInstance().sendEvent(
- redfish::messages::taskAborted(std::to_string(index)), origin,
- resType);
+ event = redfish::messages::taskAborted(indexStr);
}
else if (state == "Completed")
{
- redfish::EventServiceManager::getInstance().sendEvent(
- redfish::messages::taskCompletedOK(std::to_string(index)),
- origin, resType);
+ event = redfish::messages::taskCompletedOK(indexStr);
}
else if (state == "Killed")
{
- redfish::EventServiceManager::getInstance().sendEvent(
- redfish::messages::taskRemoved(std::to_string(index)), origin,
- resType);
+ event = redfish::messages::taskRemoved(indexStr);
}
else if (state == "Exception")
{
- redfish::EventServiceManager::getInstance().sendEvent(
- redfish::messages::taskCompletedWarning(std::to_string(index)),
- origin, resType);
+ event = redfish::messages::taskCompletedWarning(indexStr);
}
else if (state == "Cancelled")
{
- redfish::EventServiceManager::getInstance().sendEvent(
- redfish::messages::taskCancelled(std::to_string(index)), origin,
- resType);
+ event = redfish::messages::taskCancelled(indexStr);
}
else
{
BMCWEB_LOG_INFO("sendTaskEvent: No events to send");
+ return;
}
+ boost::urls::url origin =
+ boost::urls::format("/redfish/v1/TaskService/Tasks/{}", index);
+ EventServiceManager::getInstance().sendEvent(event, origin.buffer(),
+ "Task");
}
void startTimer(const std::chrono::seconds& timeout)