From e0f46f19f79169eaa63b33745233a4706b870b66 Mon Sep 17 00:00:00 2001 From: Miguel Lavalle Date: Sun, 1 May 2016 23:51:23 +0000 Subject: [PATCH] Don't load DNS integration in l3_router_plugin In this patchset we stop the l3_router_plugin from loading the DNS integration extension. The DNS integration extension should only be configured by the operator by adding 'dns' to the 'extension_driver' list in ml2_conf.ini Change-Id: I1321d9821973fe918005a8c2f3dd751af9affe38 Closes-Bug: #1574694 (cherry picked from commit 56962922cc439409bcecd808a1e9bbec2c3756f7) --- neutron/db/dns_db.py | 12 ++++-------- neutron/db/l3_db.py | 8 +++++--- neutron/services/l3_router/l3_router_plugin.py | 3 +-- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/neutron/db/dns_db.py b/neutron/db/dns_db.py index f62bc98ee9b..9b483e31b0f 100644 --- a/neutron/db/dns_db.py +++ b/neutron/db/dns_db.py @@ -28,8 +28,6 @@ from neutron.db import model_base from neutron.db import models_v2 from neutron.extensions import dns from neutron.extensions import l3 -from neutron import manager -from neutron.plugins.common import constants as service_constants from neutron.services.externaldns import driver LOG = logging.getLogger(__name__) @@ -193,9 +191,8 @@ class DNSDbMixin(object): def _process_dns_floatingip_update_precommit(self, context, floatingip_data): # expects to be called within a plugin's session - plugin = manager.NeutronManager.get_service_plugins().get( - service_constants.L3_ROUTER_NAT) - if not utils.is_extension_supported(plugin, dns.Dns.get_alias()): + if not utils.is_extension_supported(self._core_plugin, + dns.Dns.get_alias()): return if not self.dns_driver: return @@ -251,9 +248,8 @@ class DNSDbMixin(object): [floatingip_data['floating_ip_address']]) def _process_dns_floatingip_delete(self, context, floatingip_data): - plugin = manager.NeutronManager.get_service_plugins().get( - service_constants.L3_ROUTER_NAT) - if not utils.is_extension_supported(plugin, dns.Dns.get_alias()): + if not utils.is_extension_supported(self._core_plugin, + dns.Dns.get_alias()): return dns_data_db = context.session.query(FloatingIPDNS).filter_by( floatingip_id=floatingip_data['id']).one_or_none() diff --git a/neutron/db/l3_db.py b/neutron/db/l3_db.py index f63ee33f09a..9e7a97e973b 100644 --- a/neutron/db/l3_db.py +++ b/neutron/db/l3_db.py @@ -1119,7 +1119,8 @@ class L3_NAT_dbonly_mixin(l3.RouterPluginBase, msg = _("Network %s does not contain any IPv4 subnet") % f_net_id raise n_exc.BadRequest(resource='floatingip', msg=msg) - dns_integration = utils.is_extension_supported(self, 'dns-integration') + dns_integration = utils.is_extension_supported(self._core_plugin, + 'dns-integration') with context.session.begin(subtransactions=True): # This external port is never exposed to the tenant. # it is used purely for internal system and admin use when @@ -1186,7 +1187,8 @@ class L3_NAT_dbonly_mixin(l3.RouterPluginBase, def _update_floatingip(self, context, id, floatingip): fip = floatingip['floatingip'] - dns_integration = utils.is_extension_supported(self, 'dns-integration') + dns_integration = utils.is_extension_supported(self._core_plugin, + 'dns-integration') with context.session.begin(subtransactions=True): floatingip_db = self._get_floatingip(context, id) old_floatingip = self._make_floatingip_dict(floatingip_db) @@ -1225,7 +1227,7 @@ class L3_NAT_dbonly_mixin(l3.RouterPluginBase, def _delete_floatingip(self, context, id): floatingip = self._get_floatingip(context, id) floatingip_dict = self._make_floatingip_dict(floatingip) - if utils.is_extension_supported(self, 'dns-integration'): + if utils.is_extension_supported(self._core_plugin, 'dns-integration'): self._process_dns_floatingip_delete(context, floatingip_dict) # Foreign key cascade will take care of the removal of the # floating IP record once the port is deleted. We can't start diff --git a/neutron/services/l3_router/l3_router_plugin.py b/neutron/services/l3_router/l3_router_plugin.py index 801a46328bd..70fcdce04f8 100644 --- a/neutron/services/l3_router/l3_router_plugin.py +++ b/neutron/services/l3_router/l3_router_plugin.py @@ -54,8 +54,7 @@ class L3RouterPlugin(service_base.ServicePluginBase, """ supported_extension_aliases = ["dvr", "router", "ext-gw-mode", "extraroute", "l3_agent_scheduler", - "l3-ha", "router_availability_zone", - "dns-integration"] + "l3-ha", "router_availability_zone"] @resource_registry.tracked_resources(router=l3_db.Router, floatingip=l3_db.FloatingIP)