修复 neutron 端口上的 dns 分配

https://bugs.launchpad.net/neutron/+bug/1873091

neutron 端口的 dns 分配中的 dns-domain 部分始终从 neutron 配置中定义的 dns-domain 获取

问题描述

当用户启用 dns 或 dns_domain_ports 扩展时,有多种方法可以在 Neutron 侧定义 Designate dns_domain(Designate 区域),如下所示

  • 包含 dns_domain 默认值的 Neutron 配置文件

  • Neutron 网络定义,它定义了网络的 dns_domain 并为该网络启用了 dns 扩展,因此在网络下创建的每个端口都将在该 dns_domain 中拥有一个 dns 记录,并且它会覆盖配置文件中的默认值

  • 当启用 dns_domain_ports 扩展时,Neutron 端口定义用于覆盖 Neutron 网络 dns_domain 并创建在另一个 dns_domain 下的 dns 记录

可以使用 openstack network set –dns-domain 在网络级别设置 dns-domain,并使用 dns_domain_ports 扩展 openstack port create –dns-domain 在端口级别设置,并且在形成端口 dns 分配时,这两个值(网络级别、端口级别 dns-domain)都会被忽略,始终使用 neutron 配置中的 dns-domain

提议的变更

端口级别的 dns-domain 应该优先于网络级别的 dns-domain,网络级别的 dns-domain 优先于 neutron 配置 dns-domain,如果上述两个级别没有分配 dns-domain,则 neutron 配置 dns-domain 将作为默认值

测试

单元测试

应该添加单元测试以确保在 Neutron 端口 dns 分配中使用正确的 dns-domain

文档影响

用户文档

文档显示 dns 分配使用在 Neutron 配置中定义的 dns 域或在 Neutron 网络中定义的 dns 域(通常相同),但没有显示来自 Neutron 端口创建的 dns_domain(用例 3),应该更新

参考资料

https://docs.openstack.org/neutron/latest/admin/config-dns-int-ext-serv.html#config-dns-int-ext-serv