跳到主要内容

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
202Accepted
400BadRequest、ActionParamMissing、ActionParamTypeError、ActionParamFormatError
401AccessDenied
403InsufficientPrivilege
413RequestEntityTooLarge
500InternalError
503ServiceUnavailable

示例

以下使用 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’

更新服务无法在文件上传阶段识别分段式 HTTP 推送更新请求,也无法显示上传进度。