Fix BigSwitch plugin to handle device_id re-use in porttracker code
Updates the BigSwitch port_tracker code to use the sqlalchemy merge method instead of the add method for the port location tracking code to avoid primary key constraint errors if device-ids are moved or re-used Fixes: bug #1208990 Change-Id: I06065ac888873b00f445d4356b17f084ee38c1ea
This commit is contained in:
parent
23ac6df865
commit
752422dcb0
@ -47,4 +47,4 @@ def put_port_hostid(context, port_id, host_id):
|
|||||||
return
|
return
|
||||||
with context.session.begin(subtransactions=True):
|
with context.session.begin(subtransactions=True):
|
||||||
location = PortLocation(port_id=port_id, host_id=host_id)
|
location = PortLocation(port_id=port_id, host_id=host_id)
|
||||||
context.session.add(location)
|
context.session.merge(location)
|
||||||
|
@ -190,6 +190,16 @@ class TestBigSwitchVIFOverride(test_plugin.TestPortsV2,
|
|||||||
with self.port(**kwargs) as port:
|
with self.port(**kwargs) as port:
|
||||||
self.assertEqual(port['port']['binding:vif_type'], self.VIF_TYPE)
|
self.assertEqual(port['port']['binding:vif_type'], self.VIF_TYPE)
|
||||||
|
|
||||||
|
def test_port_move(self):
|
||||||
|
kwargs = {'name': 'name', 'binding:host_id': 'ivshost',
|
||||||
|
'device_id': 'override_dev'}
|
||||||
|
with self.port(**kwargs) as port:
|
||||||
|
data = {'port': {'binding:host_id': 'someotherhost',
|
||||||
|
'device_id': 'override_dev'}}
|
||||||
|
req = self.new_update_request('ports', data, port['port']['id'])
|
||||||
|
res = self.deserialize(self.fmt, req.get_response(self.api))
|
||||||
|
self.assertEqual(res['port']['binding:vif_type'], self.VIF_TYPE)
|
||||||
|
|
||||||
def _make_port(self, fmt, net_id, expected_res_status=None, **kwargs):
|
def _make_port(self, fmt, net_id, expected_res_status=None, **kwargs):
|
||||||
res = self._create_port(fmt, net_id, expected_res_status,
|
res = self._create_port(fmt, net_id, expected_res_status,
|
||||||
('binding:host_id', ), **kwargs)
|
('binding:host_id', ), **kwargs)
|
||||||
|
Loading…
Reference in New Issue
Block a user