Support agentless driver in neutron-dynamic-routing
Some BGP driver is agentless, but the neutron-dynamic-routing is bound to RPC driver so closely. So the codes need to be refactored. Change-Id: Id134faa2d08369a7ad7aab1d353b83b1fbc4d48f Related-Bug: #1611632
This commit is contained in:
parent
16f608315c
commit
57f92340c9
|
@ -0,0 +1,60 @@
|
||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
====================================================================
|
||||||
|
Adding agent-less driver support for neutron-dynamic-routing project
|
||||||
|
====================================================================
|
||||||
|
|
||||||
|
[RFE] neutron_dynamic_routing project is bound to rpc driver closely
|
||||||
|
https://bugs.launchpad.net/neutron/+bug/1611632
|
||||||
|
|
||||||
|
Problem Description
|
||||||
|
===================
|
||||||
|
|
||||||
|
The current module `BgpPlugin.py <https://github.com/openstack/neutron-dynamic-routing/blob/master/neutron_dynamic_routing/services/bgp/bgp_plugin.py#L41>`_ is bound to RPC driver so closely, so it is not
|
||||||
|
working well with the agent-less driver. Another problem is the neutron-dynamic-routing
|
||||||
|
project does not follow the service provider registration mechanism. Currently, for all
|
||||||
|
advanced service features, all projects are using service provider to load the driver,
|
||||||
|
so from this view, the `neutron-dynamic-routing <https://github.com/openstack/neutron-dynamic-routing/blob/master/neutron_dynamic_routing>`_ project needs to be refactored.
|
||||||
|
|
||||||
|
|
||||||
|
Proposed Change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Refactor the current neutron-dynamic-routing code to make sure all agent/agent-less
|
||||||
|
drivers work well.
|
||||||
|
|
||||||
|
1. Make BgpPlugin.py as an overall interface to load different BGP drivers. The
|
||||||
|
service name will be DYNAMIC_ROUTING.
|
||||||
|
|
||||||
|
2. Add a new configuration file neutron_dynamic_routing.conf to specify the
|
||||||
|
service_providers, currently, the default service provider is RPC agent driver.
|
||||||
|
|
||||||
|
3. The existing bgp_dragent.ini will be used by the RPC driver such as RYU driver and
|
||||||
|
quagga driver.
|
||||||
|
|
||||||
|
4. Create a new directory to locate the BgpRpcPluginDriver. The BgpRpcPluginDriver will
|
||||||
|
do what the current BgpPlugin did, for example, setup rpc and register callback.
|
||||||
|
|
||||||
|
|
||||||
|
Configuration file impact
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Add a new neutron_dynamic_routing.conf to specify the service_providers.
|
||||||
|
|
||||||
|
service_provider = DYNAMIC_ROUTING:PRCDriver:neutron_dynamic_routing.services.bgp.service_drivers.rpc_bgp.BgpRpcPluginDriver:default
|
||||||
|
|
||||||
|
Behaviour Changes
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Currently, for devstack, the dynamic routing agent (DR agent) is started by default. After the code refactor, the DR agent is
|
||||||
|
only started when the RPC service provider is enabled. But there will not be any behavioural changes because the
|
||||||
|
RPC back-end which is the current behaviour will remain as it is.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
https://github.com/openstack/neutron-lbaas/blobl/master/neutron_lbaas/services/loadbalancer/plugin.py
|
Loading…
Reference in New Issue