VOL-2265 test go.mod and vendor consistency;
Update dependencies to resolve `410 Gone` errors when fetching modules
Change-Id: If0bdbc1b6d629ce819b9fa4701c016df812f92d5
diff --git a/vendor/k8s.io/client-go/tools/reference/ref.go b/vendor/k8s.io/client-go/tools/reference/ref.go
index 573d948..442a991 100644
--- a/vendor/k8s.io/client-go/tools/reference/ref.go
+++ b/vendor/k8s.io/client-go/tools/reference/ref.go
@@ -19,8 +19,6 @@
import (
"errors"
"fmt"
- "net/url"
- "strings"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
@@ -30,8 +28,7 @@
var (
// Errors that could be returned by GetReference.
- ErrNilObject = errors.New("can't reference a nil object")
- ErrNoSelfLink = errors.New("selfLink was empty, can't make reference")
+ ErrNilObject = errors.New("can't reference a nil object")
)
// GetReference returns an ObjectReference which refers to the given
@@ -47,20 +44,6 @@
return ref, nil
}
- gvk := obj.GetObjectKind().GroupVersionKind()
-
- // if the object referenced is actually persisted, we can just get kind from meta
- // if we are building an object reference to something not yet persisted, we should fallback to scheme
- kind := gvk.Kind
- if len(kind) == 0 {
- // TODO: this is wrong
- gvks, _, err := scheme.ObjectKinds(obj)
- if err != nil {
- return nil, err
- }
- kind = gvks[0].Kind
- }
-
// An object that implements only List has enough metadata to build a reference
var listMeta metav1.Common
objectMeta, err := meta.Accessor(obj)
@@ -73,29 +56,29 @@
listMeta = objectMeta
}
- // if the object referenced is actually persisted, we can also get version from meta
- version := gvk.GroupVersion().String()
- if len(version) == 0 {
- selfLink := listMeta.GetSelfLink()
- if len(selfLink) == 0 {
- return nil, ErrNoSelfLink
- }
- selfLinkUrl, err := url.Parse(selfLink)
+ gvk := obj.GetObjectKind().GroupVersionKind()
+
+ // If object meta doesn't contain data about kind and/or version,
+ // we are falling back to scheme.
+ //
+ // TODO: This doesn't work for CRDs, which are not registered in scheme.
+ if gvk.Empty() {
+ gvks, _, err := scheme.ObjectKinds(obj)
if err != nil {
return nil, err
}
- // example paths: /<prefix>/<version>/*
- parts := strings.Split(selfLinkUrl.Path, "/")
- if len(parts) < 4 {
- return nil, fmt.Errorf("unexpected self link format: '%v'; got version '%v'", selfLink, version)
+ if len(gvks) == 0 || gvks[0].Empty() {
+ return nil, fmt.Errorf("unexpected gvks registered for object %T: %v", obj, gvks)
}
- if parts[1] == "api" {
- version = parts[2]
- } else {
- version = parts[2] + "/" + parts[3]
- }
+ // TODO: The same object can be registered for multiple group versions
+ // (although in practise this doesn't seem to be used).
+ // In such case, the version set may not be correct.
+ gvk = gvks[0]
}
+ kind := gvk.Kind
+ version := gvk.GroupVersion().String()
+
// only has list metadata
if objectMeta == nil {
return &v1.ObjectReference{