neutron/neutron/services/l3_router
elajkat f15fb6831a trivial: Make driver_controller's _attrs_to_driver py3 compatible
In python3 dict.values() doesn't return list but instead dict_values,
it must be converted to list to "enjoy" list operations like insert.
Add unit tests to be sure.

Closes-Bug: #1923423
Change-Id: Ie270ac2ee65c02bdb099d11af7f1d2fb62ad0f61
(cherry picked from commit e270ac2ee65c02bdb099d11af7f1d2fb62ad0f61)
(cherry picked from commit 3ec596f9ef)
(cherry picked from commit 321162a653)
2021-04-30 06:30:55 +00:00
..
service_providers trivial: Make driver_controller's _attrs_to_driver py3 compatible 2021-04-30 06:30:55 +00:00
README Adopt neutron-lib plugin directory 2016-11-23 04:45:33 -07:00
__init__.py Empty files should not contain copyright or license 2014-10-20 00:50:32 +00:00
l3_router_plugin.py Implement extension: extraroute-atomic 2019-09-11 13:58:47 +02:00

README

This service plugin implements the L3 routing functionality (resources router
and floatingip) that in earlier releases before Havana was provided by core
plugins (openvswitch, linuxbridge, ... etc).

Core plugins can now choose not to implement L3 routing functionality and
instead delegate that to the L3 routing service plugin.

The required changes to a core plugin are in that case:
- Do not inherit 'l3_db.L3_NAT_db_mixin' (or its descendants like extraroute)
  anymore.
- Remove "router" from 'supported_extension_aliases'.
- Modify any 'self' references to members in L3_NAT_db_mixin to instead use
  'directory.get_plugin(constants.L3)'
  For example,
     self.prevent_l3_port_deletion(...)
  becomes something like
     plugin = directory.get_plugin(constants.L3)
     if plugin:
         plugin.prevent_l3_port_deletion(...)

If the core plugin has relied on the L3Agent the following must also be changed:
- Do not inherit 'l3_rpc_base.L3RpcCallbackMixin' in any '*RpcCallbacks' class.
- Do not be a consumer of the topics.L3PLUGIN topic for RPC.

To use the L3 routing service plugin, add
'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin'
to 'service_plugins' in '/etc/neutron/neutron.conf'.
That is,
service_plugins = neutron.services.l3_router.l3_router_plugin.L3RouterPlugin