← Back to team overview

openstack team mailing list archive

Extensions, code vs. API


I've just finished re-reading 'OpenStack API Extensions -- an overview.' I understand the distinction between a core API and an API extension, and the value of that distinction is clear.

What I don't understand is how that distinction plays out when it comes to implementation. Within our shared implementation, is there any actual coding distinction between 'core' and 'extension'? For example, when I implemented the DNS extension I put most of the code in api/openstack/compute/contrib (clearly the place for 'extensions'.) But to support the actual functionality I made changes in nova/network/manager.py and added a couple of db tables. Everyone seemed fine with that.

Can I expect that any non-test-breaking code will be merged as long as it doesn't alter the core API, even if it's for an unpopular or obscure extension (e.g. puppet support)? If not, how have other developers handled cases where adding a private API extension requires modifications of shared code?



Follow ups