Task: Use TaskEvent messages
Task registry messages make more sense to use
for task events then standard registry entries
when applicable. Use them.
Tested:
"Messages": [
{
"@odata.type": "#Message.v1_0_0.Message",
"Message": "The task with id 0 has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.1.TaskStarted",
"Resolution": "None.",
"Severity": "OK"
}
],
Validator passed
Change-Id: I707492544e18def2833e8a2e2216ce803c42c775
Signed-off-by: James Feist <james.feist@linux.intel.com>
diff --git a/redfish-core/include/task_messages.hpp b/redfish-core/include/task_messages.hpp
new file mode 100644
index 0000000..050cc63
--- /dev/null
+++ b/redfish-core/include/task_messages.hpp
@@ -0,0 +1,125 @@
+/*
+// Copyright (c) 2020 Intel Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+*/
+
+namespace redfish
+{
+
+namespace messages
+{
+
+nlohmann::json taskAborted(const std::string& arg1)
+{
+ return nlohmann::json{
+ {"@odata.type", "#Message.v1_0_0.Message"},
+ {"MessageId", "TaskEvent.1.0.1.TaskAborted"},
+ {"Message", "The task with id " + arg1 + " has been aborted."},
+ {"MessageArgs", {arg1}},
+ {"Severity", "Critical"},
+ {"Resolution", "None."}};
+}
+
+nlohmann::json taskCancelled(const std::string& arg1)
+{
+ return nlohmann::json{
+ {"@odata.type", "#Message.v1_0_0.Message"},
+ {"MessageId", "TaskEvent.1.0.1.TaskCancelled"},
+ {"Message", "The task with id " + arg1 + " has been cancelled."},
+ {"MessageArgs", {arg1}},
+ {"Severity", "Warning"},
+ {"Resolution", "None."}};
+}
+
+nlohmann::json taskCompletedOK(const std::string& arg1)
+{
+ return nlohmann::json{
+ {"@odata.type", "#Message.v1_0_0.Message"},
+ {"MessageId", "TaskEvent.1.0.1.TaskCompletedOK"},
+ {"Message", "The task with id " + arg1 + " has Completed."},
+ {"MessageArgs", {arg1}},
+ {"Severity", "OK"},
+ {"Resolution", "None."}};
+}
+
+nlohmann::json taskCompletedWarning(const std::string& arg1)
+{
+ return nlohmann::json{{"@odata.type", "#Message.v1_0_0.Message"},
+ {"MessageId", "TaskEvent.1.0.1.TaskCompletedWarning"},
+ {"Message", "The task with id " + arg1 +
+ " has completed with warnings."},
+ {"MessageArgs", {arg1}},
+ {"Severity", "Warning"},
+ {"Resolution", "None."}};
+}
+
+nlohmann::json taskPaused(const std::string& arg1)
+{
+ return nlohmann::json{
+ {"@odata.type", "#Message.v1_0_0.Message"},
+ {"MessageId", "TaskEvent.1.0.1.TaskPaused"},
+ {"Message", "The task with id " + arg1 + " has been paused."},
+ {"MessageArgs", {arg1}},
+ {"Severity", "Warning"},
+ {"Resolution", "None."}};
+}
+
+nlohmann::json taskProgressChanged(const std::string& arg1, const size_t arg2)
+{
+ return nlohmann::json{
+ {"@odata.type", "#Message.v1_0_0.Message"},
+ {"MessageId", "TaskEvent.1.0.1.TaskProgressChanged"},
+ {"Message", "The task with id " + arg1 + " has changed to progress " +
+ std::to_string(arg2) + " percent complete."},
+ {"MessageArgs", {arg1, arg2}},
+ {"Severity", "OK"},
+ {"Resolution", "None."}};
+}
+
+nlohmann::json taskRemoved(const std::string& arg1)
+{
+ return nlohmann::json{
+ {"@odata.type", "#Message.v1_0_0.Message"},
+ {"MessageId", "TaskEvent.1.0.1.TaskRemoved"},
+ {"Message", "The task with id " + arg1 + " has been removed."},
+ {"MessageArgs", {arg1}},
+ {"Severity", "Warning"},
+ {"Resolution", "None."}};
+}
+
+nlohmann::json taskResumed(const std::string& arg1)
+{
+ return nlohmann::json{
+ {"@odata.type", "#Message.v1_0_0.Message"},
+ {"MessageId", "TaskEvent.1.0.1.TaskResumed"},
+ {"Message", "The task with id " + arg1 + " has been resumed."},
+ {"MessageArgs", {arg1}},
+ {"Severity", "OK"},
+ {"Resolution", "None."}};
+}
+
+nlohmann::json taskStarted(const std::string& arg1)
+{
+ return nlohmann::json{
+ {"@odata.type", "#Message.v1_0_0.Message"},
+ {"MessageId", "TaskEvent.1.0.1.TaskStarted"},
+ {"Message", "The task with id " + arg1 + " has started."},
+ {"MessageArgs", {arg1}},
+ {"Severity", "OK"},
+ {"Resolution", "None."}};
+}
+
+} // namespace messages
+
+} // namespace redfish
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index 667fb40..79433b9 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -2274,7 +2274,9 @@
const std::shared_ptr<task::TaskData> &taskData) {
if (!err)
{
- taskData->messages.emplace_back(messages::success());
+ taskData->messages.emplace_back(
+ messages::taskCompletedOK(
+ std::to_string(taskData->index)));
taskData->state = "Completed";
}
return task::completed;
diff --git a/redfish-core/lib/task.hpp b/redfish-core/lib/task.hpp
index 2f86a6a..cbae67b 100644
--- a/redfish-core/lib/task.hpp
+++ b/redfish-core/lib/task.hpp
@@ -20,6 +20,7 @@
#include <boost/asio.hpp>
#include <boost/container/flat_map.hpp>
#include <chrono>
+#include <task_messages.hpp>
#include <variant>
namespace redfish
@@ -206,9 +207,11 @@
self->finishTask();
self->state = "Cancelled";
self->status = "Warning";
- self->messages.emplace_back(messages::internalError());
+ self->messages.emplace_back(
+ messages::taskAborted(std::to_string(self->index)));
self->callback(ec, msg, self);
});
+ messages.emplace_back(messages::taskStarted(std::to_string(index)));
}
std::function<bool(boost::system::error_code, sdbusplus::message::message &,
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index e9793eb..60d6673 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -151,14 +151,16 @@
return task::completed;
}
+ std::string index =
+ std::to_string(taskData->index);
+
if (boost::ends_with(*state, "Invalid") ||
boost::ends_with(*state, "Failed"))
{
taskData->state = "Exception";
taskData->status = "Warning";
taskData->messages.emplace_back(
- messages::invalidObject(
- "/redfish/v1/UpdateService/"));
+ messages::taskAborted(index));
return task::completed;
}
@@ -171,7 +173,7 @@
if (boost::ends_with(*state, "Active"))
{
taskData->messages.emplace_back(
- messages::success());
+ messages::taskCompletedOK(index));
taskData->state = "Completed";
return task::completed;
}