On 05/06/15 12:32, Sean Dague wrote:
https://dague.net/2015/06/05/the-nova-api-in-kilo-and-beyond-2/

This is really informative and useful, thanks.

A few comments / questions, with bits of your text in quotes:

"Even figuring out what a cloud could do was pretty terrible. You could approximate it by listing the extensions of the API, then having a bunch of logic in your code to realize which extensions turned on or off certain features, or added new data to payloads."

I guess that's why the GNU autoconf/configure system has always advised testing for particular wanted features, instead of looking at versions and then relying on carnal knowledge to know what those versions imply. Is that feature-testing-based approach impractical for OpenStack?

"Then she runs her code at against another cloud, which runs a version of Nova that predates this change. She's now effectively gone back in time. Her code now returns thousands of records instead of 1, and she's terribly confused why. She also has no way to figure out if random cloud Z is going to support this feature or not. So the only safe thing to do is implement the filtering client side instead, which means the server side filtering actually gained her very little. It's not something she can ever determine will work ahead of time. It's an API that is untrustworthy, so it's something that's best avoided."

Except that she still has to do all this anyway - i.e. write the client-side filtering, and figure out when to use it instead of server-side - even if there was an API version change accompanying the filtering feature. Doesn't she?

The difference is just between making the switch based on a version number, and making it based on detected feature support.

"If you want features in the 2.3 microversion, ..."

I especially appreciate this part, as I've been seeing all the chat about microversions go past, and not really understanding it.

FWIW, though - and maybe this is just me - when I hear "microversion", I'm thinking of the "Z" in an "X.Y.Z" version number. (With X = major and Y = minor.) So it's counterintuitive for me that "2.3" is a microversion; it just sounds like a perfectly normal major/minor version number. Are 2.0 and 2.1 microversions too?

But this is just bikeshedding really, so feel free to ignore...

"without building a giant autoconf-like system"

Aha, so you probably did consider that option, then. :-)

Many thanks,
        Neil

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to