From: Tomasz Paszkowski Date: Wed, 26 Jun 2013 12:40:46 +0000 (-0400) Subject: Add support for moving ip/addresss/default gateway X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=f03d91b850b1ef5976c110e5b14cdd0a9ef21e19;p=openstack-build%2Fneutron-build.git Add support for moving ip/addresss/default gateway Add support from moving ip/addresss/default gateway from physical interface which is going to be attached to bridge to bridge device itself. Fixes: bug #1192122 Change-Id: I8a8bf5edc17a87dcb747626dd1d6817ac48cb20d --- diff --git a/quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py b/quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py index 124aac262..4018c460d 100755 --- a/quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py +++ b/quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py @@ -140,7 +140,8 @@ class LinuxBridgeManager: """Create a vlan and bridge unless they already exist.""" interface = self.ensure_vlan(physical_interface, vlan_id) bridge_name = self.get_bridge_name(network_id) - if self.ensure_bridge(bridge_name, interface): + ips, gateway = self.get_interface_details(interface) + if self.ensure_bridge(bridge_name, interface, ips, gateway): return interface def get_interface_details(self, interface): diff --git a/quantum/tests/unit/linuxbridge/test_lb_quantum_agent.py b/quantum/tests/unit/linuxbridge/test_lb_quantum_agent.py index 1f6e5ba43..cb19a67c4 100644 --- a/quantum/tests/unit/linuxbridge/test_lb_quantum_agent.py +++ b/quantum/tests/unit/linuxbridge/test_lb_quantum_agent.py @@ -265,14 +265,21 @@ class TestLinuxBridgeManager(base.BaseTestCase): ipdict, gwdict) def test_ensure_vlan_bridge(self): - with mock.patch.object(self.lbm, 'ensure_vlan') as ens_vl_fn: + with contextlib.nested( + mock.patch.object(self.lbm, 'ensure_vlan'), + mock.patch.object(self.lbm, 'ensure_bridge'), + mock.patch.object(self.lbm, 'get_interface_details'), + ) as (ens_vl_fn, ens, get_int_det_fn): ens_vl_fn.return_value = "eth0.1" - with mock.patch.object(self.lbm, 'ensure_bridge') as ens: - self.assertEqual( - self.lbm.ensure_vlan_bridge("123", "eth0", "1"), - "eth0.1" - ) - ens.assert_called_once_with("brq123", "eth0.1") + get_int_det_fn.return_value = (None, None) + self.assertEqual(self.lbm.ensure_vlan_bridge("123", "eth0", "1"), + "eth0.1") + ens.assert_called_with("brq123", "eth0.1", None, None) + + get_int_det_fn.return_value = ("ips", "gateway") + self.assertEqual(self.lbm.ensure_vlan_bridge("123", "eth0", "1"), + "eth0.1") + ens.assert_called_with("brq123", "eth0.1", "ips", "gateway") def test_ensure_local_bridge(self): with mock.patch.object(self.lbm, 'ensure_bridge') as ens_fn: @@ -330,7 +337,11 @@ class TestLinuxBridgeManager(base.BaseTestCase): self.assertEqual(self.lbm.ensure_bridge("br0", None), "br0") ie_fn.return_Value = False self.lbm.ensure_bridge("br0", "eth0") - self.assertTrue(upd_fn.called) + upd_fn.assert_called_with("br0", "eth0", None, None) + ie_fn.assert_called_with("br0", "eth0") + + self.lbm.ensure_bridge("br0", "eth0", "ips", "gateway") + upd_fn.assert_called_with("br0", "eth0", "ips", "gateway") ie_fn.assert_called_with("br0", "eth0") exec_fn.side_effect = Exception()