背景:为支持并行升级web界面展示升级进度及生效状态,需要提供资源协作接口以支持北向接口及业务组件的交互;
评审点一:资源协作接口查询所有固件升级状态
UpdateService 资源协作接口新增方法:GetUpdateProgress。
path: /bmc/kepler/UpdateService
interface : bmc.kepler.UpdateService
方法说明:
| 项目 | 值 |
|---|---|
| 方法名称 | GetUpdateProgress |
| 变化类型 | 新增 |
| 权限 | Readonly |
| 请求签名 | ‘’ |
| 响应签名 | ‘sa(ssssssi)’ |
| 响应参数 | UpgradeMode:签名为 s,表征当前升级模式 |
| 响应参数 | UpgradeTasks:签名为 a(ssssssi),表征当前所有固件的升级进度,结构体(ssssssi)具体定义见下表 |
结构体(ssssssi)定义
| 签名 | 名称 | 取值 | 取值说明 | 取值样例 |
|---|---|---|---|---|
| s | TaskName | String | 任务名称 | |
| s | Firmware | String | 升级的固件类型 | CPLD |
| s | FirmwareInstance | String | 升级的具体的固件名称 | MB_CPLD |
| s | FileName | String | 升级的文件名称 | image.hpm |
| s | Percentage | String | 升级进度(百分比) | 8% |
| s | TaskState | String | 升级状态,具体取值如下: Pending:挂起状态 Running:正在升级 Exception:升级异常 Completed:升级完成) |
Running |
| i | ErrorCode | int32 | 错误码,取值如下: 1:升级固件异常 2:升级文件不存在 3:无效的升级固件 4:内存不足 8:先下电之后才能升级 9:固件版本不匹配 12:升级固件和设备类型不匹配 13:不支持升级BIOS 27:升级版本和WEB不匹配28:设备状态不支持固件升级70:升级固件太旧 |
1 |
评审点二:资源协作接口查询所有待生效固件生效状态
UpdateService 资源协作接口新增方法:GetPendingFirmwareList。
path: /bmc/kepler/UpdateService
interface : bmc.kepler.UpdateService
方法说明:
| 项目 | 值 |
|---|---|
| 方法名称 | GetPendingFirmwareList |
| 变化类型 | 新增 |
| 权限 | Readonly |
| 请求签名 | ‘’ |
| 响应签名 | ‘a(ysss)’ |
| 响应参数 | PendingFirmwareList:签名为 a(yssss),表征当前所有待生效固件的状态,结构体(yssss)定义见下表 |
结构体(yssss)定义
| 签名 | 名称 | 取值 | 取值说明 | 取值样例 |
|---|---|---|---|---|
| y | SystemId | uint8 | 升级的设备归属的Host | 1 |
| s | Firmware | String | 升级的固件类型 | CPLD |
| s | FirmwareInstance | String | 升级的具体的固件名称 | MB_CPLD |
| s | ActiveStatus | String | 生效状态,具体取值如下: ToBeActivated:待生效 Activating:生效中 Activated:生效完成 |
Activating |
| s | ActiveAction | String | 生效执行的动作,具体取值如下: ResetBMC:复位BMC生效 PowerOff:下电Host生效 |
ResetBMC |
评审结论
通过,具体结论如下:
- 同意资源协作接口
bmc.kepler.UpdateService新增方法GetUpdateProgress,请求签名:无,响应签名:sa(ssssssi),权限为Readonly - 同意资源协作接口
bmc.kepler.UpdateService新增方法GetPendingFirmwareList,请求签名:无,响应签名:a(ysss),权限为Readonly