Merge "Add callback BEFORE_DELETE for delete_router"

This commit is contained in:
Jenkins 2017-07-19 05:38:04 +00:00 committed by Gerrit Code Review
commit 1c94a80b55
2 changed files with 18 additions and 1 deletions

View File

@ -534,7 +534,8 @@ class L3_NAT_dbonly_mixin(l3.RouterPluginBase,
@db_api.retry_if_session_inactive()
def delete_router(self, context, id):
registry.notify(resources.ROUTER, events.BEFORE_DELETE,
self, context=context, router_id=id)
#TODO(nati) Refactor here when we have router insertion model
router = self._ensure_router_not_in_use(context, id)
original = self._make_router_dict(router)

View File

@ -3416,6 +3416,22 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
plugin._clean_garbage()
self._show('ports', port['port']['id'])
def test_router_delete_callback(self):
def prevent_router_deletion(*args, **kwargs):
# unsubscribe now that we have invoked the callback
registry.unsubscribe(prevent_router_deletion, resources.ROUTER,
events.BEFORE_DELETE)
raise exc.HTTPForbidden
registry.subscribe(prevent_router_deletion, resources.ROUTER,
events.BEFORE_DELETE)
with self.subnet():
res = self._create_router(self.fmt, _uuid())
router = self.deserialize(self.fmt, res)
self._delete('routers', router['router']['id'],
exc.HTTPForbidden.code)
class L3AgentDbTestCaseBase(L3NatTestCaseMixin):