mirror of
https://github.com/kubernetes/client-go.git
synced 2025-07-01 01:12:01 +00:00
Merge pull request #52835 from FengyunPan/Versionless-Endpoint
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.. Update gophercloud to Handle New Identity Endpoints Currently openstack cloud provider just support keystone v2.0 and v3 The latest Identity Service is publishing an ID of v3.8, we should update gophercloud to recognize v3.8 as a valid version id. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #52830 **Release note**: ```release-note NONE ``` Kubernetes-commit: 4f2d7b93da2464a3147e0a7e71d896dd2bade9ad
This commit is contained in:
commit
fab36f2095
112
Godeps/Godeps.json
generated
112
Godeps/Godeps.json
generated
@ -176,31 +176,31 @@
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/gophercloud/gophercloud",
|
||||
"Rev": "2bf16b94fdd9b01557c4d076e567fe5cbbe5a961"
|
||||
"Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/gophercloud/gophercloud/openstack",
|
||||
"Rev": "2bf16b94fdd9b01557c4d076e567fe5cbbe5a961"
|
||||
"Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tenants",
|
||||
"Rev": "2bf16b94fdd9b01557c4d076e567fe5cbbe5a961"
|
||||
"Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens",
|
||||
"Rev": "2bf16b94fdd9b01557c4d076e567fe5cbbe5a961"
|
||||
"Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens",
|
||||
"Rev": "2bf16b94fdd9b01557c4d076e567fe5cbbe5a961"
|
||||
"Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/gophercloud/gophercloud/openstack/utils",
|
||||
"Rev": "2bf16b94fdd9b01557c4d076e567fe5cbbe5a961"
|
||||
"Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/gophercloud/gophercloud/pagination",
|
||||
"Rev": "2bf16b94fdd9b01557c4d076e567fe5cbbe5a961"
|
||||
"Rev": "b4c2377fa77951a0e08163f52dc9b3e206355194"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/gregjones/httpcache",
|
||||
@ -476,199 +476,199 @@
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/fields",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/labels",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/selection",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/types",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/version",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/watch",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
|
||||
"Rev": "9496c30d9f9382f60f820cb392433abcabd2f47a"
|
||||
"Rev": "90cdcb76c44bf1fcf0aa82aeea7f614c034cbd4b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/kube-openapi/pkg/common",
|
||||
|
49
vendor/github.com/gophercloud/gophercloud/openstack/client.go
generated
vendored
49
vendor/github.com/gophercloud/gophercloud/openstack/client.go
generated
vendored
@ -4,6 +4,8 @@ import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/gophercloud/gophercloud"
|
||||
tokens2 "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens"
|
||||
@ -12,8 +14,13 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
v20 = "v2.0"
|
||||
v30 = "v3.0"
|
||||
// v2 represents Keystone v2.
|
||||
// It should never increase beyond 2.0.
|
||||
v2 = "v2.0"
|
||||
|
||||
// v3 represents Keystone v3.
|
||||
// The version can be anything from v3 to v3.x.
|
||||
v3 = "v3"
|
||||
)
|
||||
|
||||
/*
|
||||
@ -35,24 +42,25 @@ func NewClient(endpoint string) (*gophercloud.ProviderClient, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hadPath := u.Path != ""
|
||||
u.Path, u.RawQuery, u.Fragment = "", "", ""
|
||||
base := u.String()
|
||||
|
||||
u.RawQuery, u.Fragment = "", ""
|
||||
|
||||
var base string
|
||||
versionRe := regexp.MustCompile("v[0-9.]+/?")
|
||||
if version := versionRe.FindString(u.Path); version != "" {
|
||||
base = strings.Replace(u.String(), version, "", -1)
|
||||
} else {
|
||||
base = u.String()
|
||||
}
|
||||
|
||||
endpoint = gophercloud.NormalizeURL(endpoint)
|
||||
base = gophercloud.NormalizeURL(base)
|
||||
|
||||
if hadPath {
|
||||
return &gophercloud.ProviderClient{
|
||||
IdentityBase: base,
|
||||
IdentityEndpoint: endpoint,
|
||||
}, nil
|
||||
}
|
||||
|
||||
return &gophercloud.ProviderClient{
|
||||
IdentityBase: base,
|
||||
IdentityEndpoint: "",
|
||||
IdentityEndpoint: endpoint,
|
||||
}, nil
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -92,8 +100,8 @@ func AuthenticatedClient(options gophercloud.AuthOptions) (*gophercloud.Provider
|
||||
// supported at the provided endpoint.
|
||||
func Authenticate(client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error {
|
||||
versions := []*utils.Version{
|
||||
{ID: v20, Priority: 20, Suffix: "/v2.0/"},
|
||||
{ID: v30, Priority: 30, Suffix: "/v3/"},
|
||||
{ID: v2, Priority: 20, Suffix: "/v2.0/"},
|
||||
{ID: v3, Priority: 30, Suffix: "/v3/"},
|
||||
}
|
||||
|
||||
chosen, endpoint, err := utils.ChooseVersion(client, versions)
|
||||
@ -102,9 +110,9 @@ func Authenticate(client *gophercloud.ProviderClient, options gophercloud.AuthOp
|
||||
}
|
||||
|
||||
switch chosen.ID {
|
||||
case v20:
|
||||
case v2:
|
||||
return v2auth(client, endpoint, options, gophercloud.EndpointOpts{})
|
||||
case v30:
|
||||
case v3:
|
||||
return v3auth(client, endpoint, &options, gophercloud.EndpointOpts{})
|
||||
default:
|
||||
// The switch statement must be out of date from the versions list.
|
||||
@ -241,6 +249,13 @@ func NewIdentityV3(client *gophercloud.ProviderClient, eo gophercloud.EndpointOp
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure endpoint still has a suffix of v3.
|
||||
// This is because EndpointLocator might have found a versionless
|
||||
// endpoint and requests will fail unless targeted at /v3.
|
||||
if !strings.HasSuffix(endpoint, "v3/") {
|
||||
endpoint = endpoint + "v3/"
|
||||
}
|
||||
|
||||
return &gophercloud.ServiceClient{
|
||||
ProviderClient: client,
|
||||
Endpoint: endpoint,
|
||||
|
31
vendor/github.com/gophercloud/gophercloud/openstack/utils/choose_version.go
generated
vendored
31
vendor/github.com/gophercloud/gophercloud/openstack/utils/choose_version.go
generated
vendored
@ -68,11 +68,6 @@ func ChooseVersion(client *gophercloud.ProviderClient, recognized []*Version) (*
|
||||
return nil, "", err
|
||||
}
|
||||
|
||||
byID := make(map[string]*Version)
|
||||
for _, version := range recognized {
|
||||
byID[version.ID] = version
|
||||
}
|
||||
|
||||
var highest *Version
|
||||
var endpoint string
|
||||
|
||||
@ -84,20 +79,22 @@ func ChooseVersion(client *gophercloud.ProviderClient, recognized []*Version) (*
|
||||
}
|
||||
}
|
||||
|
||||
if matching, ok := byID[value.ID]; ok {
|
||||
// Prefer a version that exactly matches the provided endpoint.
|
||||
if href == identityEndpoint {
|
||||
if href == "" {
|
||||
return nil, "", fmt.Errorf("Endpoint missing in version %s response from %s", value.ID, client.IdentityBase)
|
||||
for _, version := range recognized {
|
||||
if strings.Contains(value.ID, version.ID) {
|
||||
// Prefer a version that exactly matches the provided endpoint.
|
||||
if href == identityEndpoint {
|
||||
if href == "" {
|
||||
return nil, "", fmt.Errorf("Endpoint missing in version %s response from %s", value.ID, client.IdentityBase)
|
||||
}
|
||||
return version, href, nil
|
||||
}
|
||||
return matching, href, nil
|
||||
}
|
||||
|
||||
// Otherwise, find the highest-priority version with a whitelisted status.
|
||||
if goodStatus[strings.ToLower(value.Status)] {
|
||||
if highest == nil || matching.Priority > highest.Priority {
|
||||
highest = matching
|
||||
endpoint = href
|
||||
// Otherwise, find the highest-priority version with a whitelisted status.
|
||||
if goodStatus[strings.ToLower(value.Status)] {
|
||||
if highest == nil || version.Priority > highest.Priority {
|
||||
highest = version
|
||||
endpoint = href
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user