评审背景
问题:
定制化BMC的版本号之后,在生产加工场景下校验BMC的Available分区版本号失败
原因:
- 生产场景下使用 IPMI 命令 Read Version Data( NetFn=30h,CMD=90h,Sub command=08h)获取BMC的版本号,目前支持获取三个分区(Active/Backup/Available)的BMC的release版本号
- IPMI 命令 Read Version Data 命令实现是从 BMC 的记录版本号的文件中直接获取,由于 Available 分区的 release 版本号无法直接获取,因此获取到的是该分区的定制化之后的版本号
当前BMC支持的版本号说明
- BMC SDK 版本号:该版本号用于展示当前BMC使用的SDK版本号,版本号采用固定的四段式版本号格式,如:5.10.0.0
- BMC release版本号:该版本号用于展示当前release的BMC版本号,对于社区 openUBMC 来说就是固定的 openUBMC release 的版本号,如:25.06
- BMC 最终版本号:该版本号是BMC产品化之后对外查询的版本号,支持社区根据对应的商业策略以及客户诉求进行编排或者定制(如果没有任何编排和定制则同对应的 BMC release 版本号)。如:1.0.6
对于上述问题,总共有以下三种方案:
方案一
- 方案描述: 将 IPMI 命令 Read Version Data 查询 BMC 固件release版本号的部分,由 BMC 版本管理组件进行实现,实现方式是采用同样的 IPMI 命令注册并且提升优先级
- 方案优点:不需要新增资源协作接口,直接通过IPMI命令的实现迁移进行处理,影响范围小
- 方案缺点:IPMI命令查询参数有需要查询所有的版本号情况(请求参数 version_type 为 0xFF),对于该方案无法实现
- 是否推荐: 不推荐
方案二
- 方案描述: 新增 FirmwareInvectory 资源协作接口路径,用于承载 BMC 固件三个分区的 release 版本号
- 方案优点:不需要新增资源协作接口,仅增加 FirmwareInventory 对象即可;下游使用可以直接根据 FirmwareInventory 资源协作接口进行获取和匹配
- 方案缺点:北向接口 Redfish 的 FirmwareInventory 资源中会自动暴露,对于北向接口有影响
- 是否推荐: 次级推荐
方案三
-
方案描述: BMC 版本管理资源协作接口下新增方法,用于提供三个分区 release 版本号
-
方案优点:(1)提供给下游对应的 BMC 的 release 版本号查询路径;(2)北向接口中没有自动暴露,对于北向接口无影响
-
方案缺点: 需要新增资源协作接口,在 mdb_interface 以及社区上需要说明
-
是否推荐: 主要推荐
新增资源协作接口信息如下:
| 项 | 方法 | 备注说明 |
|---|---|---|
| 资源path | /bmc/kepler/UpdateService/ManagerVersion |
已有path |
| 资源interface | bmc.kepler.UpdateService.ManagerVersion |
已有interface |
| 方法名称 | GetReleaseVersion |
新增 |
| 方法权限 | ReadOnly | 新增 |
| 说明 | 获取BMC固件的release版本号 | |
| 请求签名 | 无 | |
| 请求参数 | 无 | |
| 响应签名 | sss | |
| 响应参数 | ActiveVersion:string类型,Active分区的BMC release版本BackupVersion: string类型,Backup分区的BMC release版本AvailableVersion: string类型,Available分区的BMC release版本 |
评审点
根据上述方案陈述,决策采用方案
评审结论
同意在资源协作接口 bmc.kepler.UpdateService.ManagerVersion 下新增方法 GetReleaseVersion,权限为 ReadOnly,请求签名:无,响应签名:sss,响应参数表示BMC的3个分区(返回结果依次为: Active分区, Backup分区, Available分区)的 release 版本