【已评审】新增资源协作接口方法GetAllFirmwareInfo

评审背景

问题

CLI接口ipmcget -d version 实测查询时间1.8-2.5s,BMC的性能基线是命令响应时间2s内

原因分析

ipmcget -d version 查询固件信息时,会遍历资源协作接口 bmc.kepler.UpdateService.FirmwareInfo 的所有对象获取固件信息,对应的资源协作接口路径/bmc/kepler/UpdateService/FirmwareInventory/:Id下固件信息较多,遍历访问导致当前性能降低。

解决方案

CLI接口获取所有的固件版本信息时,由原来的遍历资源接口访问方式为一次性获取所有的固件信息,降低和资源协作接口的访问次数,提升性能。

评审点

新增资源协作接口方法GetAllFirmwareInfo ,一次性获取所有固件信息

  • 资源路径/bmc/kepler/UpdateService/FirmwareInventory
  • 资源接口bmc.kepler.UpdateService.FirmwareInventory
  • 方法 : GetAllFirmwareInfo
  • 权限:ReadOnly
  • 请求签名 : 无
  • 请求参数 :无
  • 响应签名 : a(sa{ss})
  • 响应参数array<object> 类型,所有的固件信息列表。其中具体的参数说明如下:
    • FirmwareIdstring 类型,当前固件的标识。如:ActiveBMC
    • FirmwareInfo array<string, string> 类型,当前固件的信息。具体的信息见下表1

表1 - GetAllFirmwareInfo 接口获取的固件信息详细说明

属性名称 属性类型 属性说明 示例
Id string 固件标识 ActiveBMC
Version string 固件版本 5.10.0.2
Name string 固件对外展示的名称 ActiveBMC
Location string 存储固件的器件的位号 U75
ReleaseDate string 固件发布时间 11:41:03 Jun 21 2025
BuildNum string 固件构建版本号 001

评审结论

同意在资源协作接口 bmc.kepler.UpdateService.FirmwareInventory 下新增方法 GetAllFirmwareInfo,用于获取当前所有的固件信息,权限为 ReadOnly,无请求参数,响应参数见上述评审材料。

  1. 问题背景中是否只有北向接口 CLI 有这个问题,还是其他北向接口(如WEB,Redfish)也有这个问题?需要把问题写清楚
  2. 考虑能否在北向接口的机制支持下,支持一次性或者对应 interface 的所有对象,而不是每次出现这种批量获取,都需要新增批量接口?

1.(1)WEB当前也存在该问题
(2)Redfish接口直接拿/bmc/kepler/UpdateService/FirmwareInventory/下所有固件信息直接展示,不存在该情况
2.当前已有部分实现为获取所有/bmc/kepler/UpdateService/FirmwareInventory/下的Members后进行筛选的方式

遗留问题:响应参数信息详细写出来