]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
ofagent: Remove obsolete bridge_mappings (agent side)
authorYAMAMOTO Takashi <yamamoto@valinux.co.jp>
Mon, 20 Oct 2014 05:44:13 +0000 (14:44 +0900)
committerYAMAMOTO Takashi <yamamoto@valinux.co.jp>
Wed, 19 Nov 2014 01:14:41 +0000 (10:14 +0900)
For ofagent, it has been superseded by physical_interface_mappings
and was planned to be removed in Kilo.

Related: blueprint ofagent-physical-interface-mappings
Change-Id: I68c7e9991a3dc14ccad709ed1a438c7c45420dd6

neutron/plugins/ofagent/README
neutron/plugins/ofagent/agent/ofa_neutron_agent.py
neutron/tests/unit/ofagent/test_ofa_neutron_agent.py

index acd968bc95b2ea43bfb45178a61067b8729734e0..37aca7cf4f28f417c1bbb094217f29d2da747966 100644 (file)
@@ -7,8 +7,8 @@ https://github.com/osrg/ryu/wiki/OpenStack
 
 # -- Notes for updating from Icehouce
 
-OVS.bridge_mappings is deprecated for ofagent.  It's planned to be
-removed in Kilo.  Please use AGENT.physical_interface_mappings instead.
+OVS.bridge_mappings is deprecated for ofagent.  It was removed in Kilo.
+Please use AGENT.physical_interface_mappings instead.
 To mimic an existing setup with bridge_mapping, you can create
 a veth pair, link one side of it to the bridge, and then specify
 the other side in physical_interface_mappings.
index d54d99210a8751d42747194ee05f28a307f9b3b4..bbfe28e602664dbeda9000581728cde2f0639abc 100644 (file)
@@ -34,7 +34,6 @@ from ryu.ofproto import ofproto_v1_3 as ryu_ofp13
 from neutron.agent import l2population_rpc
 from neutron.agent.linux import ip_lib
 from neutron.agent.linux import ovs_lib
-from neutron.agent.linux import utils
 from neutron.agent import rpc as agent_rpc
 from neutron.agent import securitygroups_rpc as sg_rpc
 from neutron.common import constants as n_const
@@ -196,8 +195,7 @@ class OFANeutronAgent(n_rpc.RpcCallback,
 
     def __init__(self, ryuapp, integ_br, local_ip,
                  bridge_mappings, interface_mappings, root_helper,
-                 polling_interval, tunnel_types=None,
-                 veth_mtu=None):
+                 polling_interval, tunnel_types=None):
         """Constructor.
 
         :param ryuapp: object of the ryu app.
@@ -212,11 +210,9 @@ class OFANeutronAgent(n_rpc.RpcCallback,
         :param tunnel_types: A list of tunnel types to enable support for in
                the agent. If set, will automatically set enable_tunneling to
                True.
-        :param veth_mtu: MTU size for veth interfaces.
         """
         super(OFANeutronAgent, self).__init__()
         self.ryuapp = ryuapp
-        self.veth_mtu = veth_mtu
         self.root_helper = root_helper
         # TODO(yamamoto): Remove this VLAN leftover
         self.available_local_vlans = set(xrange(ofa_const.LOCAL_VLAN_MIN,
@@ -250,8 +246,6 @@ class OFANeutronAgent(n_rpc.RpcCallback,
         self.setup_integration_br()
         self.int_ofports = {}
         self.setup_physical_interfaces(interface_mappings)
-        # TODO(yamamoto): Remove physical bridge support
-        self.setup_physical_bridges(bridge_mappings)
         self.local_vlan_map = {}
         self.tun_ofports = {}
         for t in tables.TUNNEL_TYPES:
@@ -596,76 +590,6 @@ class OFANeutronAgent(n_rpc.RpcCallback,
         br.setup_ofp()
         br.setup_default_table()
 
-    def _phys_br_prepare_create_veth(self, br, int_veth_name, phys_veth_name):
-        self.int_br.delete_port(int_veth_name)
-        br.delete_port(phys_veth_name)
-        if ip_lib.device_exists(int_veth_name, self.root_helper):
-            ip_lib.IPDevice(int_veth_name, self.root_helper).link.delete()
-            # Give udev a chance to process its rules here, to avoid
-            # race conditions between commands launched by udev rules
-            # and the subsequent call to ip_wrapper.add_veth
-            utils.execute(['udevadm', 'settle', '--timeout=10'])
-
-    def _phys_br_create_veth(self, br, int_veth_name,
-                             phys_veth_name, physical_network, ip_wrapper):
-        int_veth, phys_veth = ip_wrapper.add_veth(int_veth_name,
-                                                  phys_veth_name)
-        int_br = self.int_br
-        self.int_ofports[physical_network] = int(int_br.add_port(int_veth))
-        self.phys_ofports[physical_network] = int(br.add_port(phys_veth))
-        return (int_veth, phys_veth)
-
-    def _phys_br_enable_veth_to_pass_traffic(self, int_veth, phys_veth):
-        # enable veth to pass traffic
-        int_veth.link.set_up()
-        phys_veth.link.set_up()
-
-        if self.veth_mtu:
-            # set up mtu size for veth interfaces
-            int_veth.link.set_mtu(self.veth_mtu)
-            phys_veth.link.set_mtu(self.veth_mtu)
-
-    def _phys_br_patch_physical_bridge_with_integration_bridge(
-            self, br, physical_network, bridge, ip_wrapper):
-        int_veth_name = constants.PEER_INTEGRATION_PREFIX + bridge
-        phys_veth_name = constants.PEER_PHYSICAL_PREFIX + bridge
-        self._phys_br_prepare_create_veth(br, int_veth_name, phys_veth_name)
-        int_veth, phys_veth = self._phys_br_create_veth(br, int_veth_name,
-                                                        phys_veth_name,
-                                                        physical_network,
-                                                        ip_wrapper)
-        self._phys_br_enable_veth_to_pass_traffic(int_veth, phys_veth)
-
-    def setup_physical_bridges(self, bridge_mappings):
-        """Setup the physical network bridges.
-
-        Creates physical network bridges and links them to the
-        integration bridge using veths.
-
-        :param bridge_mappings: map physical network names to bridge names.
-        """
-        self.phys_brs = {}
-        self.phys_ofports = {}
-        ip_wrapper = ip_lib.IPWrapper(self.root_helper)
-        for physical_network, bridge in bridge_mappings.iteritems():
-            LOG.info(_LI("Mapping physical network %(physical_network)s to "
-                         "bridge %(bridge)s"),
-                     {'physical_network': physical_network,
-                      'bridge': bridge})
-            # setup physical bridge
-            if not ip_lib.device_exists(bridge, self.root_helper):
-                LOG.error(_LE("Bridge %(bridge)s for physical network "
-                              "%(physical_network)s does not exist. Agent "
-                              "terminated!"),
-                          {'physical_network': physical_network,
-                           'bridge': bridge})
-                raise SystemExit(1)
-            br = Bridge(bridge, self.root_helper, self.ryuapp)
-            self.phys_brs[physical_network] = br
-
-            self._phys_br_patch_physical_bridge_with_integration_bridge(
-                br, physical_network, bridge, ip_wrapper)
-
     def setup_physical_interfaces(self, interface_mappings):
         """Setup the physical network interfaces.
 
@@ -1001,7 +925,6 @@ def create_agent_config_map(config):
         root_helper=config.AGENT.root_helper,
         polling_interval=config.AGENT.polling_interval,
         tunnel_types=config.AGENT.tunnel_types,
-        veth_mtu=config.AGENT.veth_mtu,
     )
 
     # If enable_tunneling is TRUE, set tunnel_type to default to GRE
index 3ccc724bca54986d5b3dde7157f64691872bc041..8113e151842467b4c8dadf734bc3d43ce36dbe43 100644 (file)
@@ -28,8 +28,6 @@ import netaddr
 from oslo.config import cfg
 import testtools
 
-from neutron.agent.linux import ip_lib
-from neutron.agent.linux import utils
 from neutron.common import constants as n_const
 from neutron.openstack.common import importutils
 from neutron.plugins.common import constants as p_const
@@ -220,10 +218,7 @@ class TestOFANeutronAgent(ofa_test_base.OFAAgentTestBase):
         self.int_dp = self._mk_test_dp('int_br')
         self.agent.int_br = self._mk_test_br('int_br')
         self.agent.int_br.set_dp(self.int_dp)
-        self.agent.phys_brs['phys-net1'] = self._mk_test_br('phys_br1')
-        self.agent.phys_ofports['phys-net1'] = 777
         self.agent.int_ofports['phys-net1'] = 666
-        self.datapath = self._mk_test_dp('phys_br')
 
     def _create_tunnel_port_name(self, tunnel_ip, tunnel_type):
         tunnel_ip_hex = '%08x' % netaddr.IPAddress(tunnel_ip, version=4)
@@ -448,49 +443,6 @@ class TestOFANeutronAgent(ofa_test_base.OFAAgentTestBase):
                                physical_network="physnet")
         self.assertEqual(set(['tapb1981919-f5']), self.agent.updated_ports)
 
-    def test_setup_physical_bridges(self):
-        with contextlib.nested(
-            mock.patch.object(ip_lib, "device_exists"),
-            mock.patch.object(utils, "execute"),
-            mock.patch.object(self.mod_agent.Bridge, "add_port"),
-            mock.patch.object(self.mod_agent.Bridge, "delete_port"),
-            mock.patch.object(self.mod_agent.Bridge, "set_protocols"),
-            mock.patch.object(self.mod_agent.Bridge, "set_controller"),
-            mock.patch.object(self.mod_agent.Bridge, "get_datapath_id",
-                              return_value='0xa'),
-            mock.patch.object(self.agent.int_br, "add_port"),
-            mock.patch.object(self.agent.int_br, "delete_port"),
-            mock.patch.object(ip_lib.IPWrapper, "add_veth"),
-            mock.patch.object(ip_lib.IpLinkCommand, "delete"),
-            mock.patch.object(ip_lib.IpLinkCommand, "set_up"),
-            mock.patch.object(ip_lib.IpLinkCommand, "set_mtu"),
-            mock.patch.object(self.mod_agent.ryu_api, "get_datapath",
-                              return_value=self.datapath)
-        ) as (devex_fn, utilsexec_fn,
-              ovs_addport_fn, ovs_delport_fn, ovs_set_protocols_fn,
-              ovs_set_controller_fn, ovs_datapath_id_fn, br_addport_fn,
-              br_delport_fn, addveth_fn, linkdel_fn, linkset_fn, linkmtu_fn,
-              ryu_api_fn):
-            devex_fn.return_value = True
-            parent = mock.MagicMock()
-            parent.attach_mock(utilsexec_fn, 'utils_execute')
-            parent.attach_mock(linkdel_fn, 'link_delete')
-            parent.attach_mock(addveth_fn, 'add_veth')
-            addveth_fn.return_value = (ip_lib.IPDevice("int-br-eth1"),
-                                       ip_lib.IPDevice("phy-br-eth1"))
-            ovs_addport_fn.return_value = "25"
-            br_addport_fn.return_value = "11"
-            self.agent.setup_physical_bridges({"physnet1": "br-eth"})
-            expected_calls = [mock.call.link_delete(),
-                              mock.call.utils_execute(['udevadm',
-                                                       'settle',
-                                                       '--timeout=10']),
-                              mock.call.add_veth('int-br-eth',
-                                                 'phy-br-eth')]
-            parent.assert_has_calls(expected_calls, any_order=False)
-            self.assertEqual(11, self.agent.int_ofports["physnet1"])
-            self.assertEqual(25, self.agent.phys_ofports["physnet1"])
-
     def test_setup_physical_interfaces(self):
         with mock.patch.object(self.agent.int_br, "add_port") as add_port_fn:
             add_port_fn.return_value = "111"