Support multiple L3 backends

Registered by Isaku Yamahata on 2014-07-07

Supporting multiple L3 backends

multi-l3-backends

Blueprint information

Status:
Complete
Approver:
Armando Migliaccio
Priority:
High
Drafter:
Kevin Benton
Direction:
Approved
Assignee:
Kevin Benton
Definition:
Approved
Series goal:
Accepted for newton
Implementation:
Implemented
Milestone target:
milestone icon newton-rc1
Started by
Isaku Yamahata on 2015-05-15
Completed by
Armando Migliaccio on 2016-09-13

Related branches

Sprints

Whiteboard

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:

https://review.openstack.org/#/c/268941/

Gerrit topic: https://review.openstack.org/#q,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 'neutron.services.l3_router.service_providers.dvr.DvrDriver'
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 https://review.openstack.org/#/q/topic:flavor-flav

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:

http://lists.openstack.org/pipermail/openstack-dev/2016-February/085471.html

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):https://review.openstack.org/#/c/105078/ for spec has been restored https://review.openstack.org/#/c/134997/ for patch has been restored

Addressed by: https://review.openstack.org/105078
    Add flavor support to the L3 plugin

Addressed by: https://review.openstack.org/268941
    Add flavor/service provider support to routers

Gerrit topic: https://review.openstack.org/#q,topic:bug/1612183,n,z

Addressed by: https://review.openstack.org/353976
    Use neutron lib project's Invalid exception type

Gerrit topic: https://review.openstack.org/#q,topic:bug/1612186,n,z

Addressed by: https://review.openstack.org/353981
    Fix the attribute name: _flavor_plugin_ref

Addressed by: https://review.openstack.org/358866
    [WIP]: Only schedule routers from drivers that need it

Addressed by: https://review.openstack.org/366495
    Add API test for L3 Flavors

Gerrit topic: https://review.openstack.org/#q,topic:bug/1621430,n,z

Addressed by: https://review.openstack.org/399903
    Get rid of DVR inheritance of _delete_current_gw_port

Addressed by: https://review.openstack.org/399481
    Get rid of DVR override of remove_router_interface

Addressed by: https://review.openstack.org/399482
    Get rid of DVR override of _port_has_ipv6_address

Addressed by: https://review.openstack.org/399479
    Eliminate DVR inheritance of router create/update_db

Addressed by: https://review.openstack.org/399480
    Get rid of DVR override of add_router_interface

Addressed by: https://review.openstack.org/399506
    Get rid of L3 HA override of _update_router_db

Addressed by: https://review.openstack.org/399507
    Get rid of l3 ha delete_router inheritance

Gerrit topic: https://review.openstack.org/#q,topic:(HEAD,n,z

Addressed by: https://review.openstack.org/399505
    Get rid of create_router override in l3_ha mixin

Addressed by: https://review.openstack.org/417604
    Decompose router extra attr processing

Addressed by: https://review.openstack.org/417661
    Simplify AZ string conversion

Addressed by: https://review.openstack.org/429970
    Add decorator to skip unassociated router calls

Addressed by: https://review.openstack.org/429971
    Move _create_dvr_floating_gw_port to DVR flavor

Addressed by: https://review.openstack.org/429972
    Move _create_snat_intf_ports_if_not_exists to DVR SP

Addressed by: https://review.openstack.org/429973
    Move _delete_dvr_internal_ports to DVR SP

Addressed by: https://review.openstack.org/429974
    Move _add_csnat_on_interface_create to DVR SP

Addressed by: https://review.openstack.org/429975
    Move _update_snat_v6_addrs_after_intf_update to DVR SP

Addressed by: https://review.openstack.org/429976
    Move _cleanup_after_interface_removal to DVR SP

Addressed by: https://review.openstack.org/457586
    DVR: remove create/update/delete floating IP inheritance

Addressed by: https://review.openstack.org/457587
    DVR: Move _get_floatingip_by_port to l3_db

Addressed by: https://review.openstack.org/457588
    DVR: move _get_device_owner

Addressed by: https://review.openstack.org/457589
    DVR: move delete_floatingip_agent_gateway_port

Addressed by: https://review.openstack.org/457590
    DVR: move snat and csnat functions

Addressed by: https://review.openstack.org/457591
    Split out DVR DB into multiple classes

Addressed by: https://review.openstack.org/457592
    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