【已评审】新增资源协作接口,支持网卡的网口数量动态切换

背景

182x网卡需要支持网卡网口数量的动态配置和切换,实现网卡从2网口模式到4网口模式的灵活切换,满足不同业务场景需求

关联ISSUE

https://gitcode.com/openUBMC/network_adapter/issues/227

整体方案

1、新增资源协作对象和接口承载预加载端口数量,可由web和redfish接口查询和设置;
2、配置两个不同的网卡CSR文件分别对应2网口和4网口,自发现根据预加载端口数量选择加载不同的网卡CSR文件;

    "NetworkAdapterPreload_1": {
      "PortCount": 2,
      "PortCountAllowableValues": [2, 4]
    },
    "Connector_PCIE_2Port": {
      "Bom": "14140130",
      "Slot": 3,
      "Presence": "<=/NetworkAdapterPreload_1.PortCount|> expr($1 == 2 ? 1 : 0)",
      "Id": "111",
      "AuxId": "222"
    },
    "Connector_PCIE_4Port": {
      "Bom": "14140130",
      "Slot": 3,
      "Presence": "<=/NetworkAdapterPreload_1.PortCount|> expr($1 == 4 ? 1 : 0)",
      "Id": "aaa",
      "AuxId": "bbb"
    }

评审点

1、新增资源
path:/bmc/kepler/Systems/:SystemId/NetworkAdapterPreloads/:ID
interface:bmc.kepler.Systems.NetworkAdapter.PortConfig

详细描述

属性评审点

属性名称 签名 只读 变化通知 属性描述 访问权限 属性来源 持久化类型 易变属性
PortCount y true true 预加载端口数量 Read: ReadOnly CSR配置 掉电持久化 false
PortCountAllowableValues ay true false 预加载端口数量取值,例如[2,4]表示支持配置成2口或4口 Read: ReadOnly CSR配置 false
NodeId s true false 唯一标识,由网卡名加槽位号拼接而成,用于匹配该对象管理的网卡,例如EthernetAdapter1 Read: ReadOnly CSR配置 掉电持久化 false

方法评审点

需新增资源协作方法设置PortCount属性;
新增方法的原因:
用户设置了预加载网口数量后,BMC需要先给网卡发送命令下发此配置,再把原来的网卡相关对象卸载掉,加载新的网卡CSR文件。如果北向接口直接修改PortCount属性会出现以下问题:例如PortCount从4变到2,Connector_PCIE_4Port的presence会从1变到0,它之前加载的下一级网卡对象会被卸载,没有网卡对象就不能发送命令,因此需要新增资源协作方法保证先给网卡发送命令,再修改PortCount属性;

方法名 请求签名 请求参数描述 响应签名 响应参数描述 方法描述 访问权限
SetPortCount y PortCount:预加载端口数量 - - 设置预加载端口数量 BasicSetting

评审结论

同意新增如下资源协作对象路径和接口,用于定义网卡设备识别时的预加载配置
path:/bmc/kepler/Systems/:SystemId/NetworkAdapterPreloads/:Id
interface:bmc.kepler.Systems.NetworkAdapter.PortConfig

属性:

  • PortCount,签名为y,只读,读权限为RedOnly,来源于CSR,属性变化后发送通知信号,掉电持久化;
  • PortCountAllowableValues,签名为aq,只读,读权限为RedOnly,来源于CSR,无持久化;
  • NodeId,签名为s,只读,读权限为ReadOnly,来源于CSR,掉电持久化;

方法:

  • SetPortCount,权限为BasicSetting;

遗留问题

  1. Count命名不准确,建议改为下一次生效的数量;
    结论:已闭环,修改为PortCount;
  2. CountPool命名不准确,改成属性名 + AllowableValues;
    结论:已闭环,修改为PortCountAllowableValues;
  3. path和interface命名需要重新定义,体现网卡的网口分配;
    结论:已闭环,path 修改为 /bmc/kepler/Systems/:SystemId/NetworkAdapterPreloads/:Id,interface修改为 bmc.kepler.Systems.NetworkAdapter.PortConfig

【预审】

  1. 新增的属性最好是增加一个 CSR 的示例,更直观的表现出来属性的最终展示
  2. ConfigurablePortCountRange 这个范围是否有有效值限制?