Support multiple L3 backends

Registered by Isaku Yamahata

Supporting multiple L3 backends


Blueprint information

Armando Migliaccio
Kevin Benton
Kevin Benton
Series goal:
Accepted for newton
Milestone target:
milestone icon newton-rc1
Started by
Isaku Yamahata
Completed by
Armando Migliaccio

Related branches



Sep-12-2016(armax): complete pending documentation

Aug-08-2016(armax): waiting on decoupling scheduling from router provisioning.

July-25-2006(armax): spec merged, a few prep patches merged. Next one up in the review queue:

Gerrit topic:,topic:bp/multi-l3-backends,n,z

===How to try===
As admin:
1. neutron flavor-create super_awesome L3_ROUTER_NAT
2. neutron flavor-profile-create --driver ''
3. neutron flavor-associate <id from 1> <id from 2>

As tenant:
1. neutron flavor-list
2. neutron router-create --flavor-id=<id of super_awesome flavor>

July-11-2016(armax): slowly chipping away, kevin and I are going to give this a huge knock this week

May-5-2016(kevinbenton): see

Apr-4-2016(armax): spec and code to be refreshed by kevinbenton, armax on standby for code reviews

Mar-3-2106(armax): Moved to Newton. Please ensure you re-submit spec if necessary.

Feb-01-2016(armax): relevant ML thread:

Jan-21-2016(armax): Kevin has been working on some prototyping but this may be at risk. Spec will have to be revised to describe the design and the new proposal.

Dec-07-2015(armax): proposal pending
Oct-19-2015(armax): this needs to be rebooted based on last RFE discussion

Nov-23-2015(yamahata): for spec has been restored for patch has been restored

Addressed by:
    Add flavor support to the L3 plugin

Addressed by:
    Add flavor/service provider support to routers

Gerrit topic:,topic:bug/1612183,n,z

Addressed by:
    Use neutron lib project's Invalid exception type

Gerrit topic:,topic:bug/1612186,n,z

Addressed by:
    Fix the attribute name: _flavor_plugin_ref

Addressed by:
    [WIP]: Only schedule routers from drivers that need it

Addressed by:
    Add API test for L3 Flavors

Gerrit topic:,topic:bug/1621430,n,z

Addressed by:
    Get rid of DVR inheritance of _delete_current_gw_port

Addressed by:
    Get rid of DVR override of remove_router_interface

Addressed by:
    Get rid of DVR override of _port_has_ipv6_address

Addressed by:
    Eliminate DVR inheritance of router create/update_db

Addressed by:
    Get rid of DVR override of add_router_interface

Addressed by:
    Get rid of L3 HA override of _update_router_db

Addressed by:
    Get rid of l3 ha delete_router inheritance

Gerrit topic:,topic:(HEAD,n,z

Addressed by:
    Get rid of create_router override in l3_ha mixin

Addressed by:
    Decompose router extra attr processing

Addressed by:
    Simplify AZ string conversion

Addressed by:
    Add decorator to skip unassociated router calls

Addressed by:
    Move _create_dvr_floating_gw_port to DVR flavor

Addressed by:
    Move _create_snat_intf_ports_if_not_exists to DVR SP

Addressed by:
    Move _delete_dvr_internal_ports to DVR SP

Addressed by:
    Move _add_csnat_on_interface_create to DVR SP

Addressed by:
    Move _update_snat_v6_addrs_after_intf_update to DVR SP

Addressed by:
    Move _cleanup_after_interface_removal to DVR SP

Addressed by:
    DVR: remove create/update/delete floating IP inheritance

Addressed by:
    DVR: Move _get_floatingip_by_port to l3_db

Addressed by:
    DVR: move _get_device_owner

Addressed by:
    DVR: move delete_floatingip_agent_gateway_port

Addressed by:
    DVR: move snat and csnat functions

Addressed by:
    Split out DVR DB into multiple classes

Addressed by:
    Eliminate mixin references in DVRResourceOperationHandler


Work Items

Work items:
decompose the DVR and HA DB logic into operations in their respective drivers: TODO
adjust the L3 agent scheduling to interrogate the drivers first before scheduling to agents: TODO
adjust the RPC sync routers call to get the information from drivers rather than being aware of relevant data for each type: TODO
devref of how to write a driver: TODO
add callback events for all router operations: TODO
enhance service provider framework to allow entry points: TODO