Merge "Prevent updating mac address of bound port"
This commit is contained in:
commit
3e1a996a28
|
@ -1002,7 +1002,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
|
||||||
if not port_db:
|
if not port_db:
|
||||||
raise exc.PortNotFound(port_id=id)
|
raise exc.PortNotFound(port_id=id)
|
||||||
mac_address_updated = self._check_mac_update_allowed(
|
mac_address_updated = self._check_mac_update_allowed(
|
||||||
port_db, port, binding)
|
port_db, attrs, binding)
|
||||||
need_port_update_notify |= mac_address_updated
|
need_port_update_notify |= mac_address_updated
|
||||||
original_port = self._make_port_dict(port_db)
|
original_port = self._make_port_dict(port_db)
|
||||||
updated_port = super(Ml2Plugin, self).update_port(context, id,
|
updated_port = super(Ml2Plugin, self).update_port(context, id,
|
||||||
|
|
|
@ -460,6 +460,31 @@ class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
|
||||||
self.assertIsNone(l3plugin.disassociate_floatingips(ctx, port_id))
|
self.assertIsNone(l3plugin.disassociate_floatingips(ctx, port_id))
|
||||||
|
|
||||||
|
|
||||||
|
class TestMl2PluginOnly(Ml2PluginV2TestCase):
|
||||||
|
"""For testing methods that don't call drivers"""
|
||||||
|
|
||||||
|
def _test_check_mac_update_allowed(self, vif_type, expect_change=True):
|
||||||
|
plugin = manager.NeutronManager.get_plugin()
|
||||||
|
port = {'mac_address': "fake_mac", 'id': "fake_id"}
|
||||||
|
if expect_change:
|
||||||
|
new_attrs = {"mac_address": "dummy_mac"}
|
||||||
|
else:
|
||||||
|
new_attrs = {"mac_address": port['mac_address']}
|
||||||
|
binding = mock.Mock()
|
||||||
|
binding.vif_type = vif_type
|
||||||
|
mac_changed = plugin._check_mac_update_allowed(port, new_attrs,
|
||||||
|
binding)
|
||||||
|
self.assertEqual(expect_change, mac_changed)
|
||||||
|
|
||||||
|
def test_check_mac_update_allowed_if_no_mac_change(self):
|
||||||
|
self._test_check_mac_update_allowed(portbindings.VIF_TYPE_UNBOUND,
|
||||||
|
expect_change=False)
|
||||||
|
|
||||||
|
def test_check_mac_update_allowed_unless_bound(self):
|
||||||
|
with testtools.ExpectedException(exc.PortBound):
|
||||||
|
self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)
|
||||||
|
|
||||||
|
|
||||||
class TestMl2DvrPortsV2(TestMl2PortsV2):
|
class TestMl2DvrPortsV2(TestMl2PortsV2):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestMl2DvrPortsV2, self).setUp()
|
super(TestMl2DvrPortsV2, self).setUp()
|
||||||
|
|
Loading…
Reference in New Issue