【待评审】新增资源协作接口属性及方法,支持复位锁定

ISSUE链接

背景 (必填,文字描述议题背景,如需求来源、问题场景)
在VRD 生效过程中(general_hardware组件)或者是BIOS 处于post阶段(bios组件)下,BMC禁止复位,此时如果进行rollback操作,会重复调用GracefulReset接口,导致刷复位失败日志。主要原因就是A组件禁止复位时,B组件无法感知,因此,需要框架提供能力统一管理复位锁定场景及组件、原因等信息,并支持组件查询当前是否复位锁定;
决策点
接口 bmc.kepler.SystemControl 下新增属性 LockStatus 及方法 SetLockStatus
详细描述
path: /bmc/kepler/MacaService (原有)
interface: bmc.kepler.SystemControl (原有)
properties: LockStatus (新增)
setLockStatus: SetLockStatus (新增)

新增属性:LockStatus

说明
属性名称 LockStatus
属性类型 i
枚举值 “None”: 0,
“WarmReset”: 1,
“GracefulReset”: 2
属性读写 只读
属性权限 ReadOnly
持久化
属性说明 代表复位锁定状态

新增方法:SetLockStatus

说明
方法名称 SetLockStatus
方法权限 BasicSetting
请求签名 ybu
请求参数 1 代表热复位锁定, 2 代表平滑复位级别锁定(对平滑复位和热复位均进行锁定);
true / false,分别代表加锁、解锁;
超时时间,当组件设置锁定后超过 x 秒未解锁,则自动解锁。范围为0~300秒(不包括0)。
响应签名
响应参数

评审结论

setLockStatus改成大驼峰SetLockStatus,加锁时需要传入超时时间,避免长时间加锁引发平滑重启功能异常

1、详细描述要增加业务流程图,描述清楚先做什么,再做什么;并以此为背景,描述清楚如何解决竞争问题:例如组件A禁止复位,组件B禁止复位,此时组件A再解除禁止的处理逻辑
2、属性和方法设计不合理,目前存在强制复位、平滑复位、热复位三种场景,一个锁定状态如何决定锁定的是哪个复位呢?例如组件A禁止平滑复位,组件B禁止强制复位

1、流程图未补充
2、LockStatus属性和SetLockStatus不够准确,锁定什么的状态?ResetLockStatus和SetResetLockStatus更合适
3、LockStatus的属性类型和SetLockStatus的请求参数,建议才是String类型,原因是后续扩展的时候,无法在0,1,2中间再增加其他类型了,使用字符串,内部映射不同的复位级别,有利于后续扩展。例如 GracefulReset: 1, ForceReset: 2,新增的时候可以使用WarmReset: 1, GracefulReset: 2, ForceReset: 3。
4、LockStatus属性的取值不够明确,WarmResetLocked更合理。