From: ronak Date: Tue, 1 Apr 2014 01:09:42 +0000 (-0700) Subject: Nuage Plugin: Delete router requires precommit checks X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=cffcd56d4b58429a409b55fc1db792df3fbc24c7;p=openstack-build%2Fneutron-build.git Nuage Plugin: Delete router requires precommit checks There exist a case where deleting router from neutron without deleting router-interface deletes router from VSD but not from neutron. If router has an interface with subnet router deletion is not allowed. Needs to precheck this condition before deleting router from backend (VSD). Change-Id: I4ba7eff399acda0427505328355dbfb931d62587 Closes-Bug: #1298635 --- diff --git a/neutron/plugins/nuage/plugin.py b/neutron/plugins/nuage/plugin.py index 9821048ab..99bbe266d 100644 --- a/neutron/plugins/nuage/plugin.py +++ b/neutron/plugins/nuage/plugin.py @@ -31,6 +31,7 @@ from neutron.db import external_net_db from neutron.db import l3_db from neutron.db import models_v2 from neutron.db import quota_db # noqa +from neutron.extensions import l3 from neutron.extensions import portbindings from neutron.openstack.common import excutils from neutron.openstack.common import importutils @@ -608,6 +609,13 @@ class NuagePlugin(db_base_plugin_v2.NeutronDbPluginV2, ent_rtr_mapping = nuagedb.get_ent_rtr_mapping_by_rtrid(session, id) if ent_rtr_mapping: + filters = { + 'device_id': [id], + 'device_owner': [os_constants.DEVICE_OWNER_ROUTER_INTF] + } + ports = self.get_ports(context, filters) + if ports: + raise l3.RouterInUse(router_id=id) nuage_router_id = ent_rtr_mapping['nuage_router_id'] self.nuageclient.delete_router(nuage_router_id) router_zone = nuagedb.get_rtr_zone_mapping(session, id)