[Openstack] Extensions, code vs. API

Andrew Bogott abogott at wikimedia.org
Mon Feb 6 19:30:58 UTC 2012


     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?

Thanks!

-Andrew





More information about the Openstack mailing list