Glance and Neutron (as well as other openstack services) have the option to use version-agnostic endpoints or endpoints with version-negotiation. For example, https://github.com/jclouds/jclouds-labs-openstack/blob/master/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/RegionToEndpointNegotiateVersion.java
Currently openstack services and providers have a lot of freedom do define endpoints. This means parsing the service catalog is fragile, and does not take into account having to negotiate for a version by default, or dealing with endpoints that might or might not contain version information.
The proposed solutions are to
0) Determine what is the right/consistent openstack way to deal with API versioning for endpoints.
1) Move the RegionToEndpointNegotiateVersion up to the openstack level (includes fixing tests and ServiceApis to work).
2) Also make it easier for providers to override endpoints/versioning - if needed