verify the image purpose with updater type
Verify the image purpose with updater type to make sure the correct
image is targeted for a given updater type.
Tested:
```
> curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/octet-stream" -X POST -T bios_image.tar https://${bmc}/redfish/v1/UpdateService/update
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"Id": "0",
"TaskState": "Running",
"TaskStatus": "OK"
}
Nov 05 01:51:54 romulus phosphor-software-manager[582]: Purpose (xyz.openbmc_project.Software.Version.VersionPurpose.Host) is not supported
Nov 05 01:51:54 romulus phosphor-software-manager[582]: An error occurred processing the image.
curl -k -H "X-Auth-Token: $token" -X GET https://${bmc}/redfish/v1/TaskService/Tasks/0
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"EndTime": "2024-11-05T01:51:54+00:00",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.3.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has completed with errors.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.3.TaskAborted",
"MessageSeverity": "Critical",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"JsonBody": "null",
"TargetUri": "/redfish/v1/UpdateService/update"
},
"PercentComplete": 0,
"StartTime": "2024-11-05T01:51:25+00:00",
"TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0",
"TaskState": "Exception",
"TaskStatus": "Warning"
}
```
Change-Id: I9eada7cc929a5518b44f28249a1cf8c5a55a5384
Signed-off-by: Jagpal Singh Gill <paligill@gmail.com>
diff --git a/item_updater.hpp b/item_updater.hpp
index fac41f3..6274abe 100644
--- a/item_updater.hpp
+++ b/item_updater.hpp
@@ -91,7 +91,7 @@
bool useUpdateDBusInterface = true) :
ItemUpdaterInherit(ctx.get_bus(), path.c_str(),
ItemUpdaterInherit::action::defer_emit),
- useUpdateDBusInterface(useUpdateDBusInterface), ctx(ctx),
+ type(type), useUpdateDBusInterface(useUpdateDBusInterface), ctx(ctx),
bus(ctx.get_bus()), helper(bus)
{
if (!useUpdateDBusInterface)
@@ -273,6 +273,9 @@
/** @brief The slot of running BMC image */
uint32_t runningImageSlot = 0;
+ /** @brief The type of updater. */
+ UpdaterType type;
+
/** @brief Flag to indicate if the update interface is used or not */
bool useUpdateDBusInterface;