Reviewed: https://review.openstack.org/273448 Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=7d153a671b5fcc77437bc1e9b41015da1acc57f8 Submitter: Jenkins Branch: master
commit 7d153a671b5fcc77437bc1e9b41015da1acc57f8 Author: Andreas Scheuring <[email protected]> Date: Thu Jan 28 10:28:43 2016 +0100 Moving Common Agent into separate module Moving the CommonAgent and all it's unittests into a speparate module. Closes-Bug: #1468803 Change-Id: Ifccc6ee1a77eef3928ad326cd5857092aeef4a17 ** Changed in: neutron Status: In Progress => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1468803 Title: [RFE] Create a modular L2 agent framework for linuxbridge, sriov and macvtap agents Status in neutron: Fix Released Bug description: Problem Statement ================= Currently, the Open vSwitch, Linux Bridge, and sriov mechanism drivers for the ML2 plugin have their own agents. This means that when improvements are made to one agent implementation, they have to be ported over to the other agents to gain the improvement. This has already happened, with patches like [1]. Much of the agent functionality is common enough that much of the code could be shared. Discussion on the mailing list [2] Analysis of current agents ========================== Currently the following agents are in the neutron tree - openvswitch [4] - linuxbridge [3] - sriov [5] - mlnx agent [6] For Mitaka the following agent is proposed - Macvtap agent [7] The following agent use a classical agent loop, monitoring or new devices to show up: linuxbridge, sriov, mlnx, macvtap OVS uses ovsdb events (or similar things) to get notified about new events. Proposal ======== High level architecture ----------------------- Today the linuxbridge agent exists of 4 classes - NetworkSegment - LinuxBridgeManager --> encpsulating most of the bridge specifics - LinuxBridgeRpcCallbacks --> Class containing all the rpc callback methods - LinuxBridgeNeutronAgentRPC --> The agent loop itself #1 Get a clear separation between agent loop and bridge impl specifics Move all bridge specific code from LinuxBridgeNeutronAgentRPC to LinuxBridgeManager, like config options, rpc registrations,... #2 Modify the LinuxBridgeNeutronAgentRPC to take the manager class as arg instead of creating it within the constructor. Manager class will be instantiated in lb main method #3 Merge LinuxBridgeRpcCallbacks into LinuxBridgeNeutronAgentRPC #4 Establish a clear interface for a manager class and enforce this in the common agent. Other manager must satisfy this interface in order to work properly with the common agent #5 Move common agent into a new location Benefit ------- Sharing agent code, getting improvements/fixes for all agents. No needs for porting anymore. Scope ----- The proposal will restructure the lb agent in such a way and establish the lb agent as a first user. NOT part of this proposal is to move over the sriov agent. However the common agent is designed in a way to make that easily possible. I'm just saying this is a separate effort. This proposal will have no impact on the OVS agent. Possible follow-up stages ------------------------- - Implement macvtap agent as exploiter - Move over sriov agent as exploiter - Get shared code between the common agent and ovs agent? - mlnx agent? Sources ======= [1] https://review.openstack.org/#/c/138512/ [2] http://lists.openstack.org/pipermail/openstack-dev/2015-June/067605.html [3] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py [4] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py [5] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py [6] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/mlnx/agent/eswitch_neutron_agent.py [7] https://bugs.launchpad.net/neutron/+bug/1480979 To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1468803/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

