ML2 BigSwitch: Don't modify parent context

Makes a copy of the port context before changing
it in preparation for the backend controller so
other drivers are not affected. Also removes a
UT that was exercising direct modification of VIF
details in the port context, which is not allowed
by the ML2 plugin.

Closes-Bug: #1294308
Change-Id: I47281dcd23c022813b8b6eda0a3d39c4482277b9
This commit is contained in:
Kevin Benton 2014-03-18 12:11:53 -07:00
parent 0009e474e2
commit 9014f66fce
2 changed files with 3 additions and 13 deletions

View File

@ -17,6 +17,7 @@
#
# @author: Sumit Naiksatam, sumitnaiksatam@gmail.com, Big Switch Networks, Inc.
# @author: Kevin Benton, Big Switch Networks, Inc.
import copy
import eventlet
from oslo.config import cfg
@ -94,7 +95,8 @@ class BigSwitchMechanismDriver(NeutronRestProxyV2Base,
self.servers.rest_delete_port(net["tenant_id"], net["id"], port['id'])
def _prepare_port_for_controller(self, context):
port = context.current
# make a copy so the context isn't changed for other drivers
port = copy.deepcopy(context.current)
net = context.network.current
port['network'] = net
port['binding_host'] = context._binding.host

View File

@ -77,18 +77,6 @@ class TestBigSwitchMechDriverPortsV2(test_db_plugin.TestPortsV2,
self.assertEqual(port['port']['status'], 'DOWN')
self.assertEqual(self.port_create_status, 'DOWN')
# exercise the host_id tracking code
def test_port_vif_details(self):
kwargs = {'name': 'name', 'binding:host_id': 'ivshost',
'device_id': 'override_dev'}
with self.port(**kwargs) as port:
self.assertEqual(port['port']['binding:vif_type'],
portbindings.VIF_TYPE_IVS)
kwargs = {'name': 'name2', 'binding:host_id': 'someotherhost',
'device_id': 'other_dev'}
with self.port(**kwargs) as port:
self.assertEqual(port['port']['binding:vif_type'], self.VIF_TYPE)
def _make_port(self, fmt, net_id, expected_res_status=None, arg_list=None,
**kwargs):
arg_list = arg_list or ()