【已评审】升级资源协作接口增加自定义Message

ISSUE链接

暂无

背景

  • Redfish触发升级后,可以在URI/redfish/v1/TaskService/Tasks/{taskid}查询升级任务信息。
  • 升级完成后,Messages展示Task执行结果
  • 当前Messages中的Message是根据错误引擎定义来展示
  • 客户诉求:需要在Message中展示特定字段:升级固件当前版本、升级固件目标版本、升级固件的生效方式

现状

当前Messages中的Message是根据错误引擎定义来展示,当前升级成功错误引擎的定义如下。Message的传参为固件类型。

"FirmwareUpgradeComplete": {
            "Description": "Indicates that the firmware upgrade is complete.",
            "Message": "Upgrading the %1 is complete.",
            "Severity": "OK",
            "NumberOfArgs": 1,
            "ParamTypes": [
                "string"
            ],
            "Resolution": "None",
            "HttpStatusCode": 200,
            "IpmiCompletionCode": "0x00",
            "SnmpStatusCode": 0,
            "TraceDepth": 0
        }

差距

  • 升级固件当前版本、目标版本、生效方式 当前只有固件管理内部能获取到,对外无法获取
  • 当前Message是根据错误引擎定义来展示,当前升级成功错误引擎的定义如下。Message的传参为固件类型。无法满足客户诉求
  • 如果在固件管理直接定制Message,会涉及Redfish接口变更,可能会对上层网管有影响,因此只能在客户定制仓修改。
  • 当前存在方法GetUpdateProgress可以获取升级任务的信息,此方法现在是提供给北向获取升级进度。因此此方法的响应参数中没有 升级固件当前版本、升级固件目标版本、升级固件的生效方式

解决方案

  • 扩展方法GetUpdateProgress的响应参数,使得该方法能够获取升级固件当前版本、升级固件目标版本、升级固件的生效方式,提供给客户定制仓使用
  • 在客户定制仓,将Message自定义,展示升级固件当前版本、升级固件目标版本、升级固件的生效方式

评审点1:查询升级进度的资源协作方法响应中增加扩展参数

path(已有)/bmc/kepler/UpdateService
interface(已有)bmc.kepler.UpdateService
method(已有)GetUpdateProgress

方法详情如下:

说明
方法名称 GetUpdateProgress
权限 ReadOnly
请求签名
请求参数
响应签名 sa(a{ss})
响应参数 UpgradeMode:类型为 string,表征当前升级管理的升级模式
UpgradeTasks:类型为 array<dict>,表征当前升级管理的升级任务的进度信息,其中数组的每个元素 UpdateProgress 都是一个正在升级的任务信息。当前 UpdateProgress 已经有的属性如下:
 TaskName:类型为 string,表征升级任务的名称
 Firmware:类型为 string,表征升级固件的描述
 FirmwareInstance:类型为 string,表征升级的固件实例
 FileName:类型为 string,表征升级固件包的名称
 Percentage:类型为 string,表征升级任务当前的进度百分比
 TaskState:类型为 string,表征升级任务当前的状态
 ErrorCode:类型为 string,表征升级任务的错误码(注意:对于需要映射错误码时可以转换为数字)
说明 获取所有升级任务的进度信息

本次评审需要在 UpdateProgress 下新增属性如下:

属性名称 属性签名 属性类型 属性说明
CurrentVersion s string 升级固件当前版本号
TargetVersion s string 升级固件目标版本号
ActivateMode s string 固件生效方式,取值有:
NoAction:自动生效
ResetBMC:复位BMC生效
PowerOff:下电生效

评审结论

同意在资源协作接口 bmc.kepler.UpdateService 下的方法 GetUpdateProgress 在响应参数 UpgradeTasks 中的属性 UpdateProgress 增加元素,用于表示当前固件版本信息以及生效方式。新增的元素以及说明如下:

  • CurrentVersion:取值类型为 string,表示当前升级任务中升级固件升级之前的版本号
  • TargetVersion:取值类型为 string,表示当前升级任务中升级固件升级之后的版本号
  • ActivateMode:取值类型为 string,表示当前升级任务中升级固件的生效方式

遗留问题

问题1:确认客户的需求,在新增上述属性之后是否可以满足要求
结论:已经确认,客户的需求是在升级任务的 Task 任务的描述 Message 中体现当前升级前后的版本号信息,对于Task 的 Message 信息可以通过定制的方式去处理,当前新增加的属性已经满足定制需要的原子能力信息。

CurrentVersion 当前版本号
TargetVersion 目标版本号
ActivateMode 固件生效方式
添加在UpdateProgress中,无需渲染Message和MessageArgs