Skip to content

Commit

Permalink
Delete the child object via setting the parent's attribute to None.
Browse files Browse the repository at this point in the history
Bug #1070335

We should not operate the foreigh key attribute of parent attribute
directly.

Change-Id: I98dc8eae78fdf67f0e7189e73afba77c6affcc0e
  • Loading branch information
gongysh authored and Gary Kotton committed Oct 30, 2012
1 parent ec9f1a4 commit 63b81f6
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
2 changes: 1 addition & 1 deletion quantum/db/l3_db.py
Expand Up @@ -186,7 +186,7 @@ def _update_router_gw_info(self, context, router_id, info):
# figure out if we need to delete existing port
if gw_port and gw_port['network_id'] != network_id:
with context.session.begin(subtransactions=True):
router.update({'gw_port_id': None})
router.gw_port = None
context.session.add(router)
self.delete_port(context.elevated(), gw_port['id'],
l3_port_check=False)
Expand Down
24 changes: 24 additions & 0 deletions quantum/tests/unit/test_l3_plugin.py
Expand Up @@ -630,6 +630,30 @@ def test_router_add_gateway(self):
gw_info = body['router']['external_gateway_info']
self.assertEquals(gw_info, None)

def test_router_update_gateway(self):
with self.router() as r:
with self.subnet() as s1:
with self.subnet() as s2:
self._set_net_external(s1['subnet']['network_id'])
self._add_external_gateway_to_router(
r['router']['id'],
s1['subnet']['network_id'])
body = self._show('routers', r['router']['id'])
net_id = (body['router']
['external_gateway_info']['network_id'])
self.assertEquals(net_id, s1['subnet']['network_id'])
self._set_net_external(s2['subnet']['network_id'])
self._add_external_gateway_to_router(
r['router']['id'],
s2['subnet']['network_id'])
body = self._show('routers', r['router']['id'])
net_id = (body['router']
['external_gateway_info']['network_id'])
self.assertEquals(net_id, s2['subnet']['network_id'])
self._remove_external_gateway_from_router(
r['router']['id'],
s2['subnet']['network_id'])

def test_router_add_gateway_invalid_network(self):
with self.router() as r:
self._add_external_gateway_to_router(
Expand Down

0 comments on commit 63b81f6

Please sign in to comment.