POST - 固件的分段式 HTTP 推送更新
此操作可通过将软件映像文件推送到 UpdateService.MultipartHttpPushUri 属性引用的 URI,对已安装的软件组件执行更新。在 XCC3 Redfish 服务中,UpdateService.MultipartHttpPushUri 属性值为“/redfish/v1/UpdateService/update”。
请求 URL
POST https://<BMC_IPADDR>/redfish/v1/UpdateService/update
请求正文
HTTP POST 操作应为认证提供用于访问 UpdateService 资源的足够权限。
响应
| 字段 | 类型 | 描述 |
|---|---|---|
Id | 字符串 | 创建的任务 ID。 |
Name | 字符串 | 任务名称。 |
Description | 字符串 | “This resource represents a task for a Redfish implementation.” |
TaskMonitor | 字符串 | 此任务的任务监控器的 URI。 |
StartTime | 字符串 | 上次启动任务的日期时间戳。 |
TaskState | 字符串 | 任务的状态。 |
Messages | 数组 | 这是与任务关联的消息数组。 |
PercentComplete | 整数 | 任务完成百分比。 |
HidePayload | 布尔 | 指示 Payload 对象为隐藏状态且不会在执行 GET 时返回。 |
客户端可以选择在 POST 正文中包含 HTTP 分段式表单数据,以便指定 RFC2388 规定的映像文件名。
XCC3 检查此标头并验证固件更新的大小是否受支持,并在文件大小过大时返回代码 413。
如果客户端在一个 POST 请求中上传多个文件,则会返回代码 400,并显示一条错误消息以指示格式不受支持。
当 HTTP 推送更新正在进行时,可能会拒绝分段式 HTTP 推送更新并返回代码 503,反之亦然。
状态代码
| HTTP 状态代码 | 错误消息 ID |
|---|---|
| 202 | Accepted |
| 400 | BadRequest、ActionParamMissing、ActionParamTypeError、ActionParamFormatError |
| 401 | AccessDenied |
| 403 | InsufficientPrivilege |
| 413 | RequestEntityTooLarge |
| 500 | InternalError |
| 503 | ServiceUnavailable |
示例
以下使用 curl 命令的示例是分段式 HTTP 推送更新过程。
Curl -s -k <Authentication> <Form UpdateParameters> <Form UpdateFile> https://{XCC IP}:{XCC port}/redfish/v1/UpdateService/update
- <Authentication>
指定用户凭证的基本认证标头示例:-u user:password 或 -H “X-Auth-Token: Basic <encoding string>”
使用现有会话或新会话的 X-Auth-Token 示例:-H “X-Auth-Token:<token string>”
- <Form UpdateParameters>
示例:-F ‘UpdateParameters={ “Targets”:[ “/redfish/v1/UpdateService/FirmwareInventory/BMC-Backup” ]};type=application/json’
- JSON 正文的限制:
JSON 的格式应遵循 UpdateService 架构中的 UpdateParameters 对象的定义。
任何未在 UpdateService 架构的 UpdateParameters 对象中定义的属性都将返回“400 错误请求”。
- 对于 Targets 数组:
允许空数组、null 项或一个 URI。
URI 应当是 BMC-Backup 的资源路径。
如果是空数组或 null 项,表示此次执行 MultipartHttpPushUri 固件更新的 POST 操作将指示服务把固件映像应用于所有适用目标,但备用 BMC(BMC-Backup)除外。在这种情况下,只会更新主 BMC(BMC-Primary)。
如果在 FirmareInventory 中指定 BMC-Backup 资源的一个 URI,表示此次执行 MultipartHttpPushUri 固件更新的 POST 操作将指示服务只把固件映像应用于备用 BMC(BMC-Backup)。
如果映像类型为“捆绑包配置”,系统也会验证该属性,但服务始终会将固件映像应用于除 BMC-Backup 外的所有适用目标。
对于属性 @Redfish.OperationApplyTime:
支持的值为“Immediate”、“OnReset”或“OnStartUpdateRequest”。服务会等待“OperationApplyTime”条件满足后才会启动固件更新流程。
- <Form UpdateFile>
示例:-F ‘UpdateFile=@xcc-fw.upd;type=application/octet-stream’