summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--neutron/db/agentschedulers_db.py5
-rw-r--r--neutron/tests/unit/db/test_agentschedulers_db.py5
2 files changed, 7 insertions, 3 deletions
diff --git a/neutron/db/agentschedulers_db.py b/neutron/db/agentschedulers_db.py
index 4400fc5751..c03b3289c8 100644
--- a/neutron/db/agentschedulers_db.py
+++ b/neutron/db/agentschedulers_db.py
@@ -407,9 +407,9 @@ class DhcpAgentSchedulerDbMixin(dhcpagentscheduler
def remove_network_from_dhcp_agent(self, context, id, network_id,
notify=True):
agent = self._get_agent(context, id)
- binding_obj = network.NetworkDhcpAgentBinding.get_object(
+ deleted_bindings = network.NetworkDhcpAgentBinding.delete_objects(
context, network_id=network_id, dhcp_agent_id=id)
- if not binding_obj:
+ if not deleted_bindings:
raise das_exc.NetworkNotHostedByDhcpAgent(
network_id=network_id, agent_id=id)
@@ -428,7 +428,6 @@ class DhcpAgentSchedulerDbMixin(dhcpagentscheduler
except n_exc.PortNotFound:
LOG.debug("DHCP port %s has been deleted concurrently",
port['id'])
- binding_obj.delete()
if not notify:
return
diff --git a/neutron/tests/unit/db/test_agentschedulers_db.py b/neutron/tests/unit/db/test_agentschedulers_db.py
index 91ffc15366..13a6a71d88 100644
--- a/neutron/tests/unit/db/test_agentschedulers_db.py
+++ b/neutron/tests/unit/db/test_agentschedulers_db.py
@@ -1443,6 +1443,11 @@ class OvsDhcpAgentNotifierTestCase(test_agent.AgentDBTestMixIn,
self._remove_network_from_dhcp_agent(hosta_id,
network_id)
+ # Call it second time, it should be already deleted so should 409 be
+ # returned this time
+ self._remove_network_from_dhcp_agent(
+ hosta_id, network_id,
+ expected_code=exc.HTTPConflict.code)
self.dhcp_notifier_cast.assert_called_with(
mock.ANY, 'network_delete_end',
{'network_id': network_id,