【已评审】资源协作接口增加下电锁

关联 issue

fructrl #36: BMC支持下电锁功能

背景

需求

固件管理中对于特定的固件(如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:下电锁定的原因会用来进行北向接口或者其他接口使用,因此需要保证格式和可读性。

  • 结论:已关闭。已经补充注意事项到方法的接口参数中。