ML2 Type drivers refactor to allow extensiblity

Registered by Arvind Somya

Scope:
Problem
- Currently the ML2 segmentation is managed in multiple places within the architecture
- The plugin invokes the type manager with tenant/provider segment calls
- The manager in turn invokes the type driver to reserve an available/specified segment for the network
- The segment_id if reserved is returned all the way to the plugin which then stores it inside a DB.
- The type driver itself also has tables of it’s own where it stores segment details.

Proposal
- Move all segmentation management to the type driver(s), ML2 plugin and the type manager should only be making calls to the type driver(s) to get segmentation ID’s when required.
- Send real API calls, create_network and delete_network to the type driver(s).
- Type manager collates response from all type drivers loaded and responds with all replies keyed by type driver.

Use Cases:
Custom type drivers for externally managed overlay networks. Detalied use case in attached google doc spec.

Data Model Changes:
Changes to the ml2_network_segments model to store types instead of information returned by types

Configuration variables: n/a

API's: n/a

Plugin Interface:
Type driver interface with the type manager will change

Required Plugin support: n/a

Blueprint information

Status:
Complete
Approver:
Kyle Mestery
Priority:
Medium
Drafter:
Arvind Somya
Direction:
Needs approval
Assignee:
Arvind Somya
Definition:
Obsolete
Series goal:
None
Implementation:
Needs Code Review
Milestone target:
None
Started by
Kyle Mestery
Completed by
Armando Migliaccio

Related branches

Sprints

Whiteboard

Dec-16-2015(armax): If someone is interested in pursuing it, this must be re-submitted according to guidelines defined in [1].

[1] http://docs.openstack.org/developer/neutron/policies/blueprints.html

---------------

September-3 (mestery): Moving out of Juno, the last patch in this series will need to be proposed again for Kilo.

20-July (mestery): Medium for Juno-3.

Gerrit topic: https://review.openstack.org/#q,topic:ml2-type-driver-refactor,n,z

Addressed by: https://review.openstack.org/91811
    ML2 Type drivers refactor to allow extensiblity

Gerrit topic: https://review.openstack.org/#q,topic:bp/ml2-type-driver-refactor,n,z

Addressed by: https://review.openstack.org/110404
    ML2 Type driver refactor

Addressed by: https://review.openstack.org/114666
    ML2 Type driver refactor part 1

Addressed by: https://review.openstack.org/115025
    ML2 Type Driver refactor part 2

Addressed by: https://review.openstack.org/115151
    ML2 Type Driver refactor part 3

Addressed by: https://review.openstack.org/118140
    ML2: Fix release of network segments to allocation pools

Addressed by: https://review.openstack.org/138786
    Kilo ML2 type driver refactoring

(?)

Work Items