Merge "Preventing listener deletion if it has l7 policy" into stable/mitaka

This commit is contained in:
Jenkins 2016-07-13 21:01:56 +00:00 committed by Gerrit Code Review
commit 799b93e09f
2 changed files with 16 additions and 0 deletions

View File

@ -803,6 +803,12 @@ class LoadBalancerPluginv2(loadbalancerv2.LoadBalancerPluginBaseV2):
return self.db.get_listener(context, id).to_api_dict()
def delete_listener(self, context, id):
old_listener = self.db.get_listener(context, id)
if old_listener.l7_policies:
raise loadbalancerv2.EntityInUse(
entity_using=models.L7Policy.NAME,
id=old_listener.l7_policies[0].id,
entity_in_use=models.Listener.NAME)
self.db.test_and_set_status(context, models.Listener, id,
constants.PENDING_DELETE)
listener_db = self.db.get_listener(context, id)

View File

@ -1374,6 +1374,16 @@ class LbaasListenerTests(ListenerTestBase):
resp, body = self._get_loadbalancer_api(self.lb_id)
self.assertEqual(0, len(body['loadbalancer']['listeners']))
def test_delete_listener_with_l7policy(self):
with self.listener(loadbalancer_id=self.lb_id,
no_delete=True) as listener:
with self.l7policy(listener['listener']['id'], no_delete=True):
ctx = context.get_admin_context()
self.assertRaises(
loadbalancerv2.EntityInUse,
self.plugin.delete_listener,
ctx, listener['listener']['id'])
def test_show_listener(self):
name = 'show_listener'
expected_values = {'name': name,