关联 issue
背景
需求
固件管理中对于特定的固件(如Retimer)是上电生效,在固件生效期间不允许下电,因此需要BMC支持下电锁定。
现状
BMC 目前无资源协作接口可以支持下电锁定
评审点
目前BMC的上下电能力支持两种类型:
- 支持单Host场景的上下电控制,资源协作接口是 System 维度
- 支持多Host场景的整机上下电控制,资源协作接口是 Chassis 维度
综合需求背景,需要在上述两个维度上均增加下电锁定的能力接口。
评审点一:System 资源新增资源协作接口 SetPowerOffLock
新增 Fructrl 资源协作接口,用于统一 System 和 Chassis 维度的上下电锁
path(已有): /bmc/kepler/Systems/:SystemId/FruCtrl/:Id
interface(新增): bmc.kepler.FruCtrl.PowerOffLock
新增方法信息如下
| 方法名 | SetPowerOffLock |
|---|---|
| 方法描述 | 设置下电锁定 |
| 权限 | PowerMgmt |
| 请求签名 | buss |
| 请求说明 | |
Locked:签名为 b,是否锁定,取值:true:锁定 false:解锁 |
|
Timeout:签名为 u,锁定超时时间(单位:s),取值范围 [10, 3600]注意: 超时之后自动解锁,多次同源锁定时按照最近的一次锁定时间为准 |
|
AppName:签名为 s,执行锁定的应用名称 |
|
Reason:签名为 s,执行锁定的原因描述,长度限制为 128 字节注意: 下电锁定原因作为重要提示信息,会作为对外接口暴露,或者作为判断凭据,因此需要具备可读性,整体采用大驼峰的格式。如:RetimerUpdate |
|
| 响应签名 | 无 |
| 响应说明 | 无响应,如果执行失败则 error 报错 |
新增属性信息如下
| 属性名 | 属性签名 | 属性权限 | 默认值 | 持久化 | 变更发送通知 | 属性说明 |
|---|---|---|---|---|---|---|
| PowerOffLocked | b | readOnly | false | 临时持久化 | 否 | 是否锁定 |
| PowerOffLockedReasons | as | readOnly | 空数组 | 临时持久化 | 否 | 不允许下电的原因,记录所有原因,每个元素都是一个锁定记录 |
评审点二:Chassis 资源使用上述新增资源协作接口
path(已有): /bmc/kepler/Chassis/:ChassisId/FruCtrl
interface(议题一新增): bmc.kepler.Fructrl.PowerOffLock
评审结论
通过,同意新增资源协作接口 bmc.kepler.FruCtrl.PowerOffLock,表征 BMC 下电锁定能力。
- 接口下新增 2 个属性:(1)属性
PowerOffLocked,;类型为 Boolean,只读属性,临时持久化,表征是否下电锁定;(2)属性PowerOffLockedReasons,类型为 Array,只读属性,临时持久化,表征不允许下电的原因集合。 - 接口下新增 1 个方法
SetPowerOffLock,权限为 PowerMgmt,请求签名为buss,请求参数见议题;方法无响应,如果方法执行异常则通过 error 进行报错。
遗留问题
问题1:下电锁定的原因会用来进行北向接口或者其他接口使用,因此需要保证格式和可读性。
- 结论:已关闭。已经补充注意事项到方法的接口参数中。