neutron/neutron/services/l3_router
Manjeet Singh Bhatia d97cce0403 Add missing transaction in driver_controller.
All the operations related to router associations (add/del)
were executed under transactions, there was a case
'get_provider_for_router' doing add_resource_association
out of db transaction, luckily due to autocommit there were no
issues but this patch adds the missing transaction.

Closes-Bug: #1778118

Change-Id: Iaec9a40614c7e6ce1120e9fa7ef3a4fdb4d59963
2018-06-21 18:22:00 +00:00
..
service_providers Add missing transaction in driver_controller. 2018-06-21 18:22:00 +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 Merge "remove rpc create_connection" 2018-05-04 00:08:03 +00: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