【已评审】新增映射器配置和redfish接口来提供获取子任务信息的能力

背景

部分异步任务可能存在子任务信息,为了便于用户查询子任务状态,提供redfish SubTasks机制。例如,通过redfish接口进行并行升级的操作时,需要提供查询并行升级子任务的能力,便于运维人员/系统实时感知各个升级任务的进度和状态。

整体方案

新增查询子任务集合资源和查询子任务资源信息的Redfish接口。在rackmount仓的ProcessingFlow配置中,映射类型为Task时,Destination下可以通过新增SubTaskIds配置将子任务对接到redfish任务管理流程,用户配置SubTaskIds后,根据配置的SubTaskIds来识别子任务,并通过查询子任务资源信息的接口获取各个升级任务的进度和状态。

SubTaskIds配置示例

"ProcessingFlow": [
    {
        "Type": "Task",
        "Path": "xxx",
        "Interface": "xxx",
        "Name": "xxx",
        "Params": [
        ],
        "Destination": {
            "TaskId": "TaskId",
			"SubTaskIds": "SubTaskIds"
        },
		...
    }
]

评审点

一、查询指定任务资源信息的Redfish接口/redfish/v1/TaskService/Tasks/{TaskId},响应体新增标准属性SubTasks

二、新增查询子任务集合资源的Redfish标准接口:/redfish/v1/TaskService/Tasks/{TaskId}/SubTasks

三、新增查询子任务资源信息的Redfish标准接口:/redfish/v1/TaskService/Tasks/{TaskId}/SubTasks/{TaskId2}

四、在rackmount仓的ProcessingFlow配置中,映射类型为Task时,Destination下新增SubTaskIds的配置。

详细描述

一、查询指定任务资源信息的Redfish接口/redfish/v1/TaskService/Tasks/{TaskId},响应体新增标准属性SubTasks

URI:/redfish/v1/TaskService/Tasks/{TaskId}
操作类型: GET
应用场景:查询任务的信息
详细描述:

属性名称 取值类型 取值范围 默认值 是否频繁变化并需要屏蔽变化事件 操作权限 描述
SubTasks object NA NA ReadOnly 指向该任务的子任务集合链接。如果不存在子任务,则不展示该属性
    @odata.id string NA NA ReadOnly 子任务集合链接

响应样例

{
    ...
    "SubTasks": {
	    "@odata.id": "/redfish/v1/TaskService/Tasks/1/SubTasks"
	}
	...
}

SubTasks的标准schema

"SubTasks": {
    "$ref": "http://redfish.dmtf.org/schemas/v1/TaskCollection.json#/definitions/TaskCollection",
    "description": "The link to a collection of sub-tasks for this task.",
    "longDescription": "This property shall contain a link to a resource collection of type `TaskCollection`.  This property shall not be present if this resource represents a sub-task for a task.",
    "readonly": true,
    "versionAdded": "v1_5_0"
}

二、新增查询子任务集合资源的Redfish标准接口:/redfish/v1/TaskService/Tasks/{TaskId}/SubTasks

URI:/redfish/v1/TaskService/Tasks/{TaskId}/SubTasks
操作类型: GET
应用场景:查询子任务集合资源
详细描述:

属性名称 取值类型 取值范围 默认值 是否频繁变化且
需要屏蔽变化事件
操作权限 描述
@odata.context string NA “/redfish/v1/$metadata#TaskCollection.TaskCollection” ReadOnly 子任务集合资源的OData描述信息
@odata.type string NA #TaskCollection.TaskCollection” ReadOnly 子任务集合资源schema版本号
@odata.id string NA NA ReadOnly 子任务集合资源URI的访问路径
Name string NA “SubTasks Collection” ReadOnly 子任务集合资源名称
Members@odata.count integer NA NA ReadOnly 子任务资源的成员个数
Members array NA NA ReadOnly 子任务资源的成员链接数组
    @odata.id string NA NA ReadOnly 子任务资源的成员链接

响应样例

{
    "@odata.context": "/redfish/v1/$metadata#TaskCollection.TaskCollection",
    "@odata.type": "#TaskCollection. ",
    "@odata.id": "/redfish/v1/TaskService/Tasks/1/SubTasks",
    "Name": "SubTasks Collection",
    "Members@odata.count": 2,
    "Members": [
	    {
		    "@odata.id": "/redfish/v1/TaskService/Tasks/1/SubTasks/1"
		},
		{
		    "@odata.id": "/redfish/v1/TaskService/Tasks/1/SubTasks/2"
		}
	]
}

三、新增查询子任务资源信息的Redfish标准接口:/redfish/v1/TaskService/Tasks/{TaskId}/SubTasks/{TaskId2}

URI:/redfish/v1/TaskService/Tasks/{TaskId}/SubTasks/{TaskId2}
操作类型: GET
应用场景:查询子任务资源信息
详细描述:

属性名称 取值类型 取值范围 默认值 是否频繁变化且
需要屏蔽变化事件
操作权限 描述
@odata.context string NA “/redfish/v1/$metadata#Task.Task” ReadOnly 子任务的OData描述信息
@odata.type string NA NA ReadOnly 子任务的schema版本号
@odata.id string NA NA ReadOnly 子任务URI的访问路径
Id string NA NA ReadOnly 子任务的ID
Name string NA NA ReadOnly 子任务的名称
Description string NA NA ReadOnly 子任务的描述
TaskState string NA NA ReadOnly 子任务的状态,取值如下。
New
Starting
Running
Suspended
Interrupted
Pending
Stopping
Completed
Killed
Exception
Service
TaskStatus string NA NA ReadOnly 子任务的完成状态。
OK
Warning
Major
Critical
StartTime string NA NA ReadOnly 子任务的起始时间。
EndTime string NA NA ReadOnly 子任务完成的日期和时间。此属性仅在任务完成后才会显示。
EstimatedDuration string NA NA ReadOnly 预估子任务完成总时间。当前仅并行升级的子任务支持该属性。
取值类型为字符串,格式满足正则表达式: ^P(\d+D)?(T(\d+H)?(\d+M)?(\d+S)?)?$
比如PT4M表示预估完成时间为4分钟
Messages object NA NA ReadOnly 子任务相关消息
    @odata.type string NA NA ReadOnly 子任务相关消息的schema版本号
    MessageId string NA NA ReadOnly 子任务相关消息的信息编号
    RelatedProperties array NA NA ReadOnly 子任务属性描述
    Message string NA NA ReadOnly 子任务信息
    MessageArgs array NA NA ReadOnly 子任务的详细信息
    Severity string NA NA ReadOnly 子任务状态:
OK
Warning
Critical
    Resolution string NA NA ReadOnly 解决子任务状态的处理建议
    MessageSeverity string NA NA ReadOnly 子任务状态:
OK
Warning
Critical
PercentComplete integer NA NA ReadOnly 子任务完成的百分比进度。
Oem object NA NA ReadOnly 自定义属性
    openUBMC object NA NA ReadOnly 厂商标志
        TaskPercentage string NA NA ReadOnly 子任务完成进度。

任务进行中的响应样例

{
    "@odata.context": "/redfish/v1/$metadata#Task.Task",
    "@odata.type": "#Task.v1_7_4.Task",
    "@odata.id": "/redfish/v1/TaskService/Tasks/1/SubTasks/1",
    "Id": "1",
    "Name": "Test SubTask Name",
    "Description": "",
    "TaskState": "Running",
    "TaskStatus": "OK",
    "StartTime": "2026-01-04T11:37:31+00:00",
    "EstimatedDuration": "PT6M",
    "Messages": [],
    "PercentComplete": 10,
    "Oem": {
        "openUBMC": {
            "TaskPercentage": "10%"
        }
    }
}

任务完成时的响应样例

{
    "@odata.context": "/redfish/v1/$metadata#Task.Task",
    "@odata.type": "#Task.v1_7_4.Task",
    "@odata.id": "/redfish/v1/TaskService/Tasks/1/SubTasks/1",
    "Id": "1",
    "Name": "Test SubTask Name",
    "Description": "",
    "TaskState": "Completed",
    "TaskStatus": "OK",
    "StartTime": "2026-01-04T11:37:31+00:00",
    "EndTime": "2026-01-04T11:38:35+00:00",
    "EstimatedDuration": "PT6M",
    "Messages": {
        "@odata.type": "#Message.v1_0_0.Message",
        "MessageId": "iBMC.1.0.TestSubTaskOK",
        "RelatedProperties": [],
        "Message": "Successfully SubTask.",
        "MessageArgs": [],
        "Severity": "OK",
        "Resolution": "None",
        "MessageSeverity": "OK"
    },
    "PercentComplete": 100,
    "Oem": {
        "openUBMC": {
            "TaskPercentage": "100%"
        }
    }
}

四、在rackmount仓配置ProcessingFlow中,映射类型为Task时,Destination新增SubTaskIds的配置

当ProcessingFlow的映射类型为Task时,如果存在子任务,可以在Destination新增配置:SubTaskIds

配置示例

"ProcessingFlow": [
    {
        "Type": "Task",
        "Path": "xxx",
        "Interface": "xxx",
        "Name": "xxx",
        "Params": [
        ],
        "Destination": {
            "TaskId": "TaskId",
			"SubTaskIds": "SubTaskIds"
        },
		...
    }
]

评审结论

一、同意redfish接口/redfish/v1/TaskService/Tasks/{TaskId}的响应体新增标准属性SubTasks

二、同意新增查询子任务集合资源的Redfish标准接口:/redfish/v1/TaskService/Tasks/{TaskId}/SubTasks

三、同意新增查询子任务资源信息的Redfish标准接口:/redfish/v1/TaskService/Tasks/{TaskId}/SubTasks/{TaskId2}

四、同意在rackmount仓配置ProcessingFlow中,映射类型为Task时,可以通过Destination增加SubTaskIds配置来讲子任务对接到redfish 任务管理流程中

具体接口信息见详细描述

遗留问题

1、需要在资源协作接口的规范中注明:异步执行方法,响应体需要返回TaskId;若是含有子任务,则还需要返回子任务Id的数组:SubTaskIds
结论:已闭环
SubTaskIds说明