]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Add support for moving ip/addresss/default gateway
authorTomasz Paszkowski <tpaszkowski@suse.com>
Wed, 26 Jun 2013 12:40:46 +0000 (08:40 -0400)
committerTomasz Paszkowski <tpaszkowski@suse.com>
Wed, 26 Jun 2013 14:20:11 +0000 (16:20 +0200)
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

quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py
quantum/tests/unit/linuxbridge/test_lb_quantum_agent.py

index 124aac262f276382c6b9a708e9b0261cf7d91bfd..4018c460dbac0093dd8ded21fd1a732cb0057601 100755 (executable)
@@ -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):
index 1f6e5ba43d42730768d0e0a6dcd3da31917cc215..cb19a67c401b29dac86f4f09a00e7da0ef4e55a3 100644 (file)
@@ -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()