diff --git a/openstack/endpoint_location.go b/openstack/endpoint_location.go index 254cc2d4a..3c097197a 100644 --- a/openstack/endpoint_location.go +++ b/openstack/endpoint_location.go @@ -22,7 +22,7 @@ func V2EndpointURL(catalog *tokens2.ServiceCatalog, opts golangsdk.EndpointOpts) for _, entry := range catalog.Entries { if (entry.Type == opts.Type) && (opts.Name == "" || entry.Name == opts.Name) { for _, endpoint := range entry.Endpoints { - if opts.Region == "" || endpoint.Region == opts.Region { + if endpoint.Region == opts.Region || (opts.Region == "" && endpoint.Region == "*") { endpoints = append(endpoints, endpoint) } } @@ -83,8 +83,9 @@ func V3EndpointURL(catalog *tokens3.ServiceCatalog, opts golangsdk.EndpointOpts) err.Value = opts.Availability return "", err } - if (opts.Availability == golangsdk.Availability(endpoint.Interface)) && - (opts.Region == "" || endpoint.Region == opts.Region) { + if opts.Availability == golangsdk.Availability(endpoint.Interface) && + (endpoint.Region == opts.Region || + (opts.Region == "" && endpoint.Region == "*")) { endpoints = append(endpoints, endpoint) } } diff --git a/openstack/testing/client_test.go b/openstack/testing/client_test.go index 2fcd134af..d78730ac6 100644 --- a/openstack/testing/client_test.go +++ b/openstack/testing/client_test.go @@ -295,6 +295,7 @@ func TestIdentityAdminV3Client(t *testing.T) { pc, err := openstack.AuthenticatedClient(options) th.AssertNoErr(t, err) sc, err := openstack.NewIdentityV3(pc, golangsdk.EndpointOpts{ + Region: "RegionOne", Availability: golangsdk.AvailabilityAdmin, }) th.AssertNoErr(t, err)