背景
提供固件生效控制机制,解决客户在升级固件后, 避免因系统异常上下电(如断电、强制重启)导致缓存中的待生效固件被意外触发生效,从而引发系统启动时间显著延长或启动流程异常
因此需要固件管理提供空值固件生效的接口,用于设置待生效固件是否在满足生效条件时是否自动生效,当设置待生效固件不自动生效时,满足生效条件后,固件将不进行生效处理
关联ISSUE
暂无
整体方案
- 提供接口给用户查询待生效的固件
提供待生效固件的具体信息 - 支持跳过待生效固件的被动生效机制
设置跳过待生效固件的被动生效后,BMC监听到满足生效条件,则不进行默认固件生效
评审点一 支持跳过待生效固件的被动生效资源协作接口评审(bmc.kepler.UpdateService.FirmwareActive接口新增读写属性)
详细描述
| 变更类型 | 属性名称 | 签名 | 只读 | 变化通知 | 属性描述 | 访问权限 | 属性来源 | 持久化类型 | 变更影响 |
|---|---|---|---|---|---|---|---|---|---|
| 新增 | AutoFirmwareActivationEnabled | b | false | true | 待生效固件在满足生效条件时是否自动生效 True:满足生效条件时,固件自动生效 False:满足生效条件时,不做固件生效动作 默认值:True |
Read: ReadOnly Write: BasicSetting |
– | 掉电持久化 | 无影响 |
评审点二 支持查询待生效固件信息协作接口评审(bmc.kepler.UpdateService.FirmwareActiveInfo接口新增属性)
接口描述 :用于注册待生效固件,每个固件类型仅存在一个对象,且不允许重复注册
| 变更类型 | 属性名称 | 签名 | 只读 | 变化通知 | 属性描述 | 访问权限 | 属性来源 | 持久化类型 | 变更影响 |
|---|---|---|---|---|---|---|---|---|---|
| 新增 | ToBeActivatedFirmwareIds | as | true | false | 用于映射固件信息 | ReadOnly | 固件管理根据下层组件注册生效时传入的匹配信息匹配到的FirmwareInventory的Id | 掉电持久化 | 无影响 |
评审点三 新增资源协作接口 bmc.kepler.UpdateService.FirmwareInfo.ToBeActivated
path:/bmc/kepler/UpdateService/FirmwareInventory/:Id (原有)
接口描述 :由于每个固件类型仅存在一个生效对象,且不允许重复注册,此资源协作接口新增属性用于存储待生效的同一固件类型下多个独立固件的详细信息,例如不同待生效CPLD的版本号等
| 变更类型 | 属性名称 | 签名 | 只读 | 变化通知 | 属性描述 | 访问权限 | 属性来源 | 持久化类型 | 变更影响 |
|---|---|---|---|---|---|---|---|---|---|
| 新增 | StagedVersion | s | true | false | 待生效固件版本号 | ReadOnly | 升级组件注册 | 掉电持久化 | 无影响 |
| 新增 | StagedTime | s | true | false | 固件升级时间,DateTime格式 | ReadOnly | 注册生效时由固件管理获取当前时间 | 掉电持久化 | 无影响 |
示例:
多个CPLD在上电升级后
FirmwareActiveInfo内容如下:
{
"bmc.kepler.UpdateService.FirmwareActiveInfo":{
...
"FirmwareId": "CPLD",
"ActiveCondition":"Poweroff"
...
"ToBeActivatedFirmwareIds": ["BCU_CPLD1_010101","EXU_CPLD_0101","SEU_CPLD_010102"]
...
}
}
/bmc/kepler/UpdateService/FirmwareInventory/BCU_CPLD1_010101部分内容如下:
{
"bmc.kepler.UpdateService.FirmwareInfo":{
...
"FirmwareId": "BCU_CPLD1_010101",
...
},
"bmc.kepler.UpdateService.FirmwareInfo.ToBeActivated": {
...
"StagedVersion": "1.0"
"StagedTime": "2000-02-17T20:33:42"
...
}
}
/bmc/kepler/UpdateService/FirmwareInventory/EXU_CPLD_0101部分内容如下:
{
"bmc.kepler.UpdateService.FirmwareInfo":{
...
"FirmwareId": "EXU_CPLD_0101",
...
},
"bmc.kepler.UpdateService.FirmwareInfo.ToBeActivated": {
...
"StagedVersion": "1.2"
"StagedTime": "2000-02-17T18:18:18"
...
}
}
/bmc/kepler/UpdateService/FirmwareInventory/SEU_CPLD_010102部分内容如下:
{
"bmc.kepler.UpdateService.FirmwareInfo":{
...
"FirmwareId": "SEU_CPLD_010102",
...
},
"bmc.kepler.UpdateService.FirmwareInfo.ToBeActivated": {
...
"StagedVersion": "1.3"
"StagedTime": "2000-02-17T16:16:16"
...
}
}
评审结论
通过,具体结论如下:
- 同意资源协作接口
bmc.kepler.UpdateService.FirmwareActive新增属性AutoFirmwareActivationEnabled,表示待生效固件在满足生效条件时是否自动生效;属性签名为 b,可读写,读权限为 RadOnly,写权限为 BasicSetting,属性变化时发送变更通知,掉电持久化。 - 同意资源协作接口
bmc.kepler.UpdateService.FirmwareActiveInfo新增属性ToBeActivatedFirmwareIds,标识待生效固件标识列表;属性签名为 as,只读,读权限为 ReadOnly,不需要发送变更通知,掉电持久化。 - 同意新增资源协作接口
bmc.kepler.UpdateService.FirmwareInfo.ToBeActivated,标识 FirmwareInventory 中一个固件类型下多个独立固件的详细信息;接口下新增属性StagedVersion、StagedTime,分别标识当前固件的待生效的版本和升级时间,新增属性的详细描述见议题3。
遗留问题
无