背景介绍
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 |
原因如下:
- DNS动态获取模式与手动设置从功能上冲突;
- Redfish标准定义NameServers为只读属性;
- 与历史版本兼容;
同时,为保持统一性,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,并逐步汇总全部改动。