背景
OCP卡通知式热插拔能力依赖扩展板或者Riser卡能力,但是当前OCP热插拔相关属性配置在卡的CSR上,不合理,应该改为配置在对应的单板上
"Accessor_ReadyToRemove": {
"Chip": "#/Smc_ExpBoardSMC",
"Offset": "${Slot} |> expr(($1 == 1) ? 469772801 : 469772802)",
"Size": 1,
"Mask": 2,
"Type": 0,
"Value": 0
},
"NetworkAdapter_1": {
...
"SlotNumber": "${Slot}",
"Position": "EXU",
"ReadyToRemoveValue": "#/Accessor_ReadyToRemove.Value",
"CardPowerGood": "<=/Scanner_NIC1PowerGood.Value;<=/Scanner_NIC2PowerGood.Value |> expr((${Slot} == 1) ? $1 : $2)"
}
决策点
方案一:
在interface : bmc.kepler.Systems.PCIeDevices.PCIeAddrInfo下,新增属性PowerControl,PowerState
| 属性名称 | 签名 | 默认值 | 操作权限 | 说明 | 持久化 | 变化通知 | 备注 |
|---|---|---|---|---|---|---|---|
| PowerControl | y | 不涉及 | 读写。R: ReadOnly。W: BasicSetting | 槽位的电源按键,设置为1表示槽位电源关闭 | 否 | 否 | |
| PowerState | y | 0 | 只读。R: ReadOnly | 槽位电源供电状态,0:不供电 1:供电 | 否 | 否 |
方案二:
新增path,interface,属性,方法
path:/bmc/kepler/Systems/:SystemId/PCIeSlots/:Id
interface:bmc.kepler.Systems.PCIeSlot
属性 SlotId,ComponentType,PowerState
方法 PowerControl
| 属性名称 | 签名 | 默认值 | 操作权限 | 说明 | 持久化 | 发送变化通知 | 备注 |
|---|---|---|---|---|---|---|---|
| SlotId | y | 不涉及 | 只读。R: ReadOnly。 | 槽位号,在csr中配置 | 否 | 否 | |
| SupportedComponentTypes | ay | 不涉及 | 只读。R: ReadOnly | 槽位支持的组件类型,在csr中配置,元素取值范围与资源协作接口bmc.kepler.Systems.Component的Type属性一致 | 否 | 否 | |
| PowerState | string | 空字符串 | 只读。R: ReadOnly | 槽位供电状态,Off:不供电 On:供电 | 否 | 是 |
| 方法名称 | 变化类型 | 请求签名 | 请求参数说明 | 响应签名 | 响应参数说明 | 访问权限 | 说明 | 备注 |
|---|---|---|---|---|---|---|---|---|
| PowerControl | 方法 | s | Off:设置为Off表示槽位电源关闭;On:设置为On表示槽位电源开启 | 不涉及 | 不涉及 | Basicsetting | 无 |
整体方案
通过卡的槽位和组件信息,匹配PCIeSlot对象,调用对象的PowerControl方法,写Off关闭槽位电源。
评审结论
使用方案二,同意新增如下资源协作对象和接口、属性和方法
新增path:/bmc/kepler/Systems/:SystemId/PCIeSlots/:Id
新增interface:bmc.kepler.Systems.PCIeSlot
新增属性:
| 属性名称 | 签名 | 默认值 | 操作权限 | 说明 | 持久化 | 发送变化通知 | 备注 |
|---|---|---|---|---|---|---|---|
| SlotId | y | 不涉及 | 只读。R: ReadOnly。 | 槽位号,在csr中配置 | 否 | 否 | |
| SupportedComponentTypes | ay | 不涉及 | 只读。R: ReadOnly | 槽位支持的组件类型,在csr中配置,元素取值范围与资源协作接口bmc.kepler.Systems.Component的Type属性一致 | 否 | 否 | |
| PowerState | string | 空字符串 | 只读。R: ReadOnly | 槽位供电状态,Off:不供电 On:供电 | 否 | 是 |
新增方法
| 方法名称 | 变化类型 | 请求签名 | 请求参数说明 | 响应签名 | 响应参数说明 | 访问权限 | 说明 | 备注 |
|---|---|---|---|---|---|---|---|---|
| PowerControl | 方法 | s | Off:设置为Off表示槽位电源关闭;On:设置为On表示槽位电源开启 | 不涉及 | 不涉及 | Basicsetting | 无 |
遗留问题
1、控制PCIe槽位上下电的属性建议改成方法,且不应绑定Accessor
结论:新增PowerControl方法,通过参数控制槽位上下电状态
2、PowerSupplyStatus属性命名尽量与整机电源状态保持一致,并且说明清楚取值变化场景
结论:PowerSupplyStatus改为PowerState。当卡热拔出时,槽位电源关闭,槽位供电状态,由On(供电)变为Off(不供电)。
3、考虑新增PCIeSlot类逐步替代PcieAddrInfo类
结论:新增PCIeSlot类