<div dir="ltr"><div>Hey everyone - I have a little bit of a UX request for our API developers.</div><div><br></div><div>For the last week or so, I've been working on building version negotiation logic for an OpenStack SDK. The process is pretty simple:</div><div><br></div><div>1- Read clouds.yaml for the keystone URL.</div><div>2- Query keystone for the service catalog.</div><div>3- Instantiate service instances for each discovered service.</div><div>4- Perform version negotiation on each service.</div><div><br></div><div>The problem: the service endpoints registered in the catalog all behave just a little bit differently, which makes building consistent version negotiation a royal PITA. <span style="line-height:1.5">I've annotated the various behaviors from a default devstack configuration here: <a href="http://paste.openstack.org/show/564863/">http://paste.openstack.org/show/564863/</a>.</span></div><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5">In a perfect world, every endpoint would return the same type of resource - most likely the versions resource as described in the API WG Microversions spec. It would also be nice if version negotiation can happen without requiring authentication, the easiest path to which would be supporting the 'max_version' and 'min_version' fields in the root versions resource.</span></div><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5">Sadly, this is my last week before I'm no longer paid to contribute to the OpenStack community, so I can't take on the responsibility of proposing something of this magnitude as an Ocata goal with only my own free time to offer. Is there anyone willing to help push this forward?</span></div><div><br></div><div><span style="line-height:1.5">Michael</span></div></div>