背景介绍:
诉求: BMC双网口场景,eth0固定为NCSI口,eth2固定为专用口,双网口有独立IP。该场景两个网口分别会作为一个IPMI的LAN通道,需要支持CSR配置以及定制会对应LAN通道的channel nunmber。
现状: 由于ipmi相关组件内部已经固定分配LAN2的channel number为2,channel number 8也被用作其他通道,预期LAN2的channel number配置为8,且可支持定制。
差距: 由于业务内部已经写死通道号,直接修改适配会有兼容性问题。
方案: 直接在IPMI服务前后增加一个映射层,用于将对外channel number与内部使用的channel number做转换,比如:要将NCSI口channel number设置为8,内部写死为2,则在映射层做转化:场景一,在rmcp服务收到NCSI口的报文后,将上下文中的channel number设置为2;场景二,ipmi命令req中的channel number在使用时做一次映射转换,有8转换为2,后再使用该参数进行业务处理,rsp的处理也是类似;
基于以上背景,有以下两个评审点:
评审点一:新增资源协作接口用于承载channel nunber映射相关对象
资源path:/bmc/kepler/IpmiService/ChannelNumberMappings/:Id(新增path)
资源interface:bmc.kepler.IpmiService.ChannelNumberMappings(新增interface)
变化类型:新增资源协作接口及相关属性和方法
应用场景:
- 生产装备场景,定制ipmi通道号
- 业务流程中将外部channel number转换为内部使用的channel number
详细描述:
| 属性名称 | 变化类型 | 签名 | 访问权限 | 持久化 | 变化通知 | 属性值来源 | 说明 | 约束 |
|---|---|---|---|---|---|---|---|---|
ExternalChannelNumber |
新增属性 | y | 读:ReadOnly 写:不支持 |
掉电 | true | 业务动态新增对象 | 对外的通道号 | 取值范围 [1, 11] |
InternalChannelNumber |
新增属性 | y | 读:ReadOnly 写:不支持 |
掉电 | false | 业务动态新增对象 | 对内的通道号 | 取值范围 [1, 11] |
评审点二:新增定制化项用于定制NCSI口LAN通道channel number
| 项 | 说明 |
|---|---|
| 定制化项名称 | Custom_NCSILanChannelNumber |
| 归属组件 | ipmi_core |
| 类型 | integer |
| 默认值 | 2 |
| 处理逻辑 | if(Custom_NCSILanChannelNumber != 空) NCSI口LAN通道的通道号设置为Custom_NCSILanChannelNumber else 无动作 |
| 说明 | 取值范围 [1, 11] |
评审结论
- 评审点1:不通过,需要明确整体方案之后再行进行资源协作接口评审
- 评审点2:通过,同意新增定制化项
Custom_NCSILanChannelNumber,用于定制NCSI网口的IPMI LAN通道编号,类型为integer,取值范围限定为 [1, 11],默认值为 2