[openstack-dev] [Neutron] Core API vs extension: the subnet pool feature

Akihiro Motoki amotoki at gmail.com
Mon Mar 30 17:35:21 UTC 2015

Hi Neutron folks
(API folks may be interested on this)

We have another discussion on Core vs extension in the subnet pool
feature reivew
We did the similar discussion on VLAN transparency and MTU for a
network model last week.
I would like to share my concerns on changing the core API directly.
I hope this help us make the discussion productive.
Note that I don't want to discuss the micro-versioning because it
mainly focues on Kilo FFE BP.

I would like to discuss this topic in today's neutron meeting,
but I am not so confident I can get up in time, I would like to send this mail.

The extension mechanism in Neutron provides two points for extensibility:
- (a) visibility of features in API (users can know which features are
available through the API)
- (b) opt-in mechanism in plugins (plugin maintainers can decide to
support some feature after checking the detail)

My concerns mainly comes from the first point (a).
If we have no way to detect it, users (including Horizon) need to do a
dirty work around
to determine whether some feature is available. I believe this is one
important point in API.

On the second point, my only concern (not so important) is that we are
making the core
API change at this moment of the release. Some plugins do not consume
db_base_plugin and
such plugins need to investigate the impact from now on.
On the other hand, if we use the extension mechanism all plugins need to update
their extension list in the last moment :-(

My vote at this moment is still to use an extension, but an extension
layer can be a shim.
The idea is to that all implementation can be as-is and we just add an
extension module
so that the new feature is visible thru the extension list.
It is not perfect but I think it is a good compromise regarding the first point.

I know there was a suggestion to change this into the core API in the
spec review
and I didn't notice it at that time, but I would like to raise this
before releasing it.

For longer term (and Liberty cycle),  we need to define more clear guideline
on "Core vs extension vs micro-versioning" in spec reviews.


More information about the OpenStack-dev mailing list