【已评审】EthernetInterface接口新增属性StaticNameServers

背景介绍

Redfish接口EthernetInterfaces待实现的标准资源属性StaticNameServers与已实现标准资源属性NameServers、Redfish接口NICs已实现标准资源属性NameServers和已实现标准资源属性StaticNameServers在实现上产生冲突,需要新增兼容性方案

uri:/redfish/v1/Managers/{managerid}/Ethernetinterfaces/{ethernetinterface}
应用场景:客户查询、修改BMC网口信息

属性名称 取值类型 默认值 属性含义 属性状态 操作类型 备注
StaticNameServers Array(String) [“”, “”, “”](静态模式)
[ ](动态模式)
静态DNS服务器IP地址集 本次新增(标准资源) GET/PATCH 静态模式下,StaticNameServers与NameServers内容相同。
NameServers Array(String) [“”, “”, “”] DNS服务器IP地址集 已实现(标准资源) GET/PATCH
(标准资源中仅支持GET)

上述属性的权限均为GET:ReadOnly,PATCH:BasicSetting
均不为频繁变化属性,不需屏蔽事件变化

现状

当前已实现的NameServers和已实现的StaticNameServers兼具静态模式与动态模式下的DNS服务器IP地址集查询功能与设置功能,新增EthernetInterface接口下的StaticNameServers属性后,会与现有的实现产生冲突

决策点一:Redfish接口EthernetInterface资源和NIC资源(Oem定义)NameServers属性在DNS服务器动态获取模式下从读写改为只读

修改方案

uri:/redfish/v1/Managers/{managerid}/Ethernetinterfaces/{ethernetinterface}

Ethernetinterfaces NameServers StaticNameServers
静态模式 支持GET与PATCH 支持GET与PATCH(新增)
动态模式 支持GET与PATCH → 支持GET(变更) 支持GET(新增)
Redfish规范 ReadOnly ReadWrite

uri:/redfish/v1/Managers/{managerid}/NICs/{nicid}

NICs NameServers StaticNameServers
静态模式 支持GET 支持GET与PATCH
动态模式 支持GET 支持GET与PATCH → 支持GET(变更)
Redfish规范 ReadOnly ReadWrite

以上属性对接相同资源协作接口属性;
已与周边网管确认:没有动态模式下设置DNS的场景

决策点二:Redfish接口EthernetInterface资源的StaticNameServers属性与NameServers属性在静态模式下的PATCH操作

修改方案

前置条件 场景 执行方式 对周边领域影响
静态模式 同时设置StaticNameServers与NameServers,设置的值不同 设置失败,响应PropertyValueConflict StaticNameServers为新增属性,无影响
静态模式 同时设置StaticNameServers与NameServers,设置的值相同 设置成功 StaticNameServers为新增属性,无影响

单独设置StaticNameServers与NameServers的场景与原有实现相同,对于网管/功能无兼容性影响
同时在文档中添加声明,设置NameServers为不推荐用法,如果需要设置静态DNS,建议采用StaticNameServers

评审结论

1. 同意将Redfish接口EthernetInterface资源和NIC资源(Oem定义)的NameServers属性在DNS服务器动态获取模式下从读写改为只读

redfish接口/redfish/v1/Managers/{managerid}/Ethernetinterfaces/{ethernetinterface}

  • NameServers属性在DNS服务器动态获取模式时只读,为静态模式时(手动设置)仍然为可读写
  • StaticNameServers:新增属性,按照Redfish标准实现

具体如下表所示:

Ethernetinterfaces NameServers StaticNameServers
静态模式 支持GET与PATCH 支持GET与PATCH(新增)
动态模式 支持GET与PATCH → 支持GET(变更) 支持GET(新增)
Redfish规范 ReadOnly ReadWrite

原因如下:

  1. DNS动态获取模式与手动设置从功能上冲突;
  2. Redfish标准定义NameServers为只读属性;
  3. 与历史版本兼容;

同时,为保持统一性,redfish接口/redfish/v1/Managers/{managerid}/NICs/{nicid}
StaticNameServers属性在DNS服务器动态获取模式时为只读,具体如下:

NICs NameServers StaticNameServers
静态模式 支持GET 支持GET与PATCH
动态模式 支持GET 支持GET与PATCH → 支持GET(变更)
Redfish规范 ReadOnly ReadWrite

2. 同意Redfish接口EthernetInterface资源的StaticNameServers属性与NameServers属性在静态模式下同时进行PATCH操作的处理方案

uri:/redfish/v1/Managers/{managerid}/Ethernetinterfaces/{ethernetinterface}

前置条件 场景 执行方式
静态模式 同时设置StaticNameServers与NameServers,设置的值不同 设置失败,响应PropertyValueConflict
静态模式 同时设置StaticNameServers与NameServers,设置的值相同 设置成功

遗留问题

对官方schema做了改动的地方,需要单独维护一个代码仓中的补丁文件README,并逐步汇总全部改动。

@Kunlun-Luxiaomu
NameServers属性在动态模式下由“ 支持GET与PATCH 修改为 仅支持GET”,请确认是否存在动态场景设置NameServers的情况

与工具确认不存在该应用场景