Extend Quantum core API to support advanced services

Registered by Salvatore Orlando on 2013-05-02

This blueprints stems from the discussion at the summit around, "multiple services, multiple core APIs".

The final goal is to remove the loading of essential extensions for services other than L2 + IPAM from the Extension Manager and move it into core.

The Load Balancing API extension, as well as the L3 extension will be moved into 'core' as part of this change.
The API router will also need to be extended to leverage the concept of multiple plugins (this is already somehow done by the Quantum Manager and the Extension Manager).

In theory the mapping is 1:N, where N is the number of 'services'. This means one could either have a distinct plugin per service or the same plugin for multiple services.

As a part of this work we will provide a plugin-independent API (just like /extensions) whose aim is to list the services currently enabled. It should also be possible to query extensions by service.

We expect the bulk of the work to happen inside the api.v2 package and in particular router.py

what is *not* part of this blueprint:

1) When distinct plugins are used, wiring of advanced services onto the base service is outside the scope of this blueprint.
For instance, knowing how a 'router in a VM' plugin will attach its interface into the logical switches implemented by the OVS plugin is not something that will be addressed here.
The current stance is that it is the service plugin itself which should be aware of the underlying plugin ando configuring wiring at the data plane accordingly.

2) Similarly this blueprint does not address the problem of compatibility among plugins.

3) Some services (like LB) might have a model with multiple drivers, each one having specific capabilities. This blueprint does not address the problem of how these capabilities should be retrieved; this might ultimately be achieve allowing to query extensions by service_type, but since this concept is being rivisited for Havana, it is better to keep this out of this blueprint.

Full spec to follow.

Blueprint information

Status:
Complete
Approver:
Mark McClain
Priority:
Low
Drafter:
Salvatore Orlando
Direction:
Approved
Assignee:
Eugene Nikanorov
Definition:
Approved
Series goal:
Accepted for havana
Implementation:
Implemented
Milestone target:
milestone icon 2013.2
Started by
Thierry Carrez on 2013-05-07
Completed by
Mark McClain on 2013-08-27

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/api-core-for-services,n,z

Addressed by: https://review.openstack.org/28196
    Add ability for core plugin to implement advanced services

I am resetting completion deadline to Havana-2
The patch under review, even if it does not complete the blueprint, satisfies the requirement for having a single plugin serving multiple services, which is probably the most pressing item.

(Assuming such plugins will appear in the short time)

Addressed by: https://review.openstack.org/32339
    initial impl

2013-06-24: Assigned to eugene as he's doing most of the work!

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.