[openstack-dev] usability anti-pattern

Monty Taylor mordred at inaugust.com
Sat Sep 20 01:52:46 UTC 2014


Hey,

Not to name names, but some of our client libs do this:

  client.Client(API_VERSION, os_username, ... )

I'm pretty sure they got the idea from python-glanceclient, so I blame
Brian Waldon, since he left us for CoreOS.

PLEASE STOP DOING THIS - IT CAUSES BABIES TO CRY. MORE.

As a developer, I have no way of knowing what to put here. Also, imagine
I'm writing a script that wants to talk to more than one cloud to do
things - like, say, nodepool for Infra, or an ansible openstack
inventory module. NOW WHAT? What do I put??? How do I discover that?

Let me make a suggestion...

Default it to something. Make it an optional parameter for experts. THEN
- when the client lib talks to keystone, check the service catalog for
the API version.

What's this you say? Sometimes your service doesn't expose a version in
the keystone catalog?

PLEASE STOP DOING THIS - IT CAUSES DOLPHINS TO WEEP

If you have versioned APIs, put the version in keystone. Because
otherwise, as "as a developer" have absolutely zero way to figure it out.

Well, except for the algorithm jeblair suggested: "just start with 11
and count backwards until a number works"

This message brought to you by frustrated humans trying to use the cloud.



More information about the OpenStack-dev mailing list