Ookay, last reshuffle.
* openstack.NewClient() normalizes the identity endpoint with a trailing slash, and sets base and endpoint.
* utils.ChooseVersion() checks suffixes first to short-circuit actual version calls.
* gophercloud.ProviderClient distinguishes between the root of all identity services (IdentityBase)
and the endpoint of the requested auth service (IdentityEndpoint).
diff --git a/openstack/utils/client.go b/openstack/utils/client.go
index 7e3aa12..f8a6c57 100644
--- a/openstack/utils/client.go
+++ b/openstack/utils/client.go
@@ -47,7 +47,7 @@
Options: ao,
}
- c := &gophercloud.ServiceClient{Endpoint: ao.IdentityEndpoint}
+ c := &gophercloud.ServiceClient{Endpoint: ao.IdentityEndpoint + "/"}
ar, err := identity.Authenticate(c, ao)
if err != nil {
return client, err