diff --git a/hooks/neutron_api_context.py b/hooks/neutron_api_context.py index 73144f60..19872c5e 100644 --- a/hooks/neutron_api_context.py +++ b/hooks/neutron_api_context.py @@ -49,6 +49,7 @@ TENANT_NET_TYPES = [VXLAN, GRE, VLAN, FLAT, LOCAL] EXTENSION_DRIVER_PORT_SECURITY = 'port_security' EXTENSION_DRIVER_DNS = 'dns' +EXTENSION_DRIVER_DNS_DOMAIN_PORTS = 'dns_domain_ports' EXTENSION_DRIVER_QOS = 'qos' ETC_NEUTRON = '/etc/neutron' @@ -484,7 +485,11 @@ class NeutronCCContext(context.NeutronContext): if config('enable-ml2-port-security'): extension_drivers.append(EXTENSION_DRIVER_PORT_SECURITY) if enable_dns_extension_driver: - extension_drivers.append(EXTENSION_DRIVER_DNS) + if cmp_release < 'queens': + extension_drivers.append(EXTENSION_DRIVER_DNS) + else: + extension_drivers.append(EXTENSION_DRIVER_DNS_DOMAIN_PORTS) + if is_qos_requested_and_valid(): extension_drivers.append(EXTENSION_DRIVER_QOS) diff --git a/tests/basic_deployment.py b/tests/basic_deployment.py index d793ac05..50df03e0 100644 --- a/tests/basic_deployment.py +++ b/tests/basic_deployment.py @@ -587,7 +587,11 @@ class NeutronAPIBasicDeployment(OpenStackAmuletDeployment): 'supported_pci_vendor_devs': '8086:1515', }) - if self._get_openstack_release() >= self.trusty_mitaka: + if self._get_openstack_release() >= self.xenial_queens: + expected['ml2'].update({ + 'extension_drivers': 'dns_domain_ports', + }) + elif self._get_openstack_release() >= self.trusty_mitaka: expected['ml2'].update({ 'extension_drivers': 'dns', }) diff --git a/unit_tests/test_neutron_api_context.py b/unit_tests/test_neutron_api_context.py index fee65b94..ac8a16d5 100644 --- a/unit_tests/test_neutron_api_context.py +++ b/unit_tests/test_neutron_api_context.py @@ -517,6 +517,13 @@ class NeutronCCContextTest(CharmTestCase): self.assertEqual('example.org.', ctxt['dns_domain']) self.assertEqual('port_security,dns', ctxt['extension_drivers']) + self.os_release.return_value = 'queens' + with patch.object(napi_ctxt, '_ensure_packages'): + ctxt = napi_ctxt() + self.assertEqual('example.org.', ctxt['dns_domain']) + self.assertEqual('port_security,dns_domain_ports', + ctxt['extension_drivers']) + @patch.object(context, 'NeutronLoadBalancerContext') @patch.object(context.NeutronCCContext, 'network_manager') @patch.object(context.NeutronCCContext, 'plugin')