mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Change runtime.Object signature
This commit is contained in:
		@@ -23,6 +23,7 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/meta"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -49,10 +50,16 @@ func GetReference(obj runtime.Object) (*ObjectReference, error) {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	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 := meta.Kind()
 | 
			
		||||
	if kind == "" {
 | 
			
		||||
	var kind string
 | 
			
		||||
	if gvk != nil {
 | 
			
		||||
		kind = gvk.Kind
 | 
			
		||||
	}
 | 
			
		||||
	if len(kind) == 0 {
 | 
			
		||||
		// TODO: this is wrong
 | 
			
		||||
		gvk, err := Scheme.ObjectKind(obj)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
@@ -61,32 +68,34 @@ func GetReference(obj runtime.Object) (*ObjectReference, error) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// if the object referenced is actually persisted, we can also get version from meta
 | 
			
		||||
	version := meta.APIVersion()
 | 
			
		||||
	if version == "" {
 | 
			
		||||
		selfLink := meta.SelfLink()
 | 
			
		||||
		if selfLink == "" {
 | 
			
		||||
	var version string
 | 
			
		||||
	if gvk != nil {
 | 
			
		||||
		version = gvk.GroupVersion().String()
 | 
			
		||||
	}
 | 
			
		||||
	if len(version) == 0 {
 | 
			
		||||
		selfLink := meta.GetSelfLink()
 | 
			
		||||
		if len(selfLink) == 0 {
 | 
			
		||||
			return nil, ErrNoSelfLink
 | 
			
		||||
		} else {
 | 
			
		||||
			selfLinkUrl, err := url.Parse(selfLink)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			// example paths: /<prefix>/<version>/*
 | 
			
		||||
			parts := strings.Split(selfLinkUrl.Path, "/")
 | 
			
		||||
			if len(parts) < 3 {
 | 
			
		||||
				return nil, fmt.Errorf("unexpected self link format: '%v'; got version '%v'", selfLink, version)
 | 
			
		||||
			}
 | 
			
		||||
			version = parts[2]
 | 
			
		||||
		}
 | 
			
		||||
		selfLinkUrl, err := url.Parse(selfLink)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		// example paths: /<prefix>/<version>/*
 | 
			
		||||
		parts := strings.Split(selfLinkUrl.Path, "/")
 | 
			
		||||
		if len(parts) < 3 {
 | 
			
		||||
			return nil, fmt.Errorf("unexpected self link format: '%v'; got version '%v'", selfLink, version)
 | 
			
		||||
		}
 | 
			
		||||
		version = parts[2]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &ObjectReference{
 | 
			
		||||
		Kind:            kind,
 | 
			
		||||
		APIVersion:      version,
 | 
			
		||||
		Name:            meta.Name(),
 | 
			
		||||
		Namespace:       meta.Namespace(),
 | 
			
		||||
		UID:             meta.UID(),
 | 
			
		||||
		ResourceVersion: meta.ResourceVersion(),
 | 
			
		||||
		Name:            meta.GetName(),
 | 
			
		||||
		Namespace:       meta.GetNamespace(),
 | 
			
		||||
		UID:             meta.GetUID(),
 | 
			
		||||
		ResourceVersion: meta.GetResourceVersion(),
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -102,4 +111,9 @@ func GetPartialReference(obj runtime.Object, fieldPath string) (*ObjectReference
 | 
			
		||||
 | 
			
		||||
// IsAnAPIObject allows clients to preemptively get a reference to an API object and pass it to places that
 | 
			
		||||
// intend only to get a reference to that object. This simplifies the event recording interface.
 | 
			
		||||
func (*ObjectReference) IsAnAPIObject() {}
 | 
			
		||||
func (obj *ObjectReference) SetGroupVersionKind(gvk *unversioned.GroupVersionKind) {
 | 
			
		||||
	obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind()
 | 
			
		||||
}
 | 
			
		||||
func (obj *ObjectReference) GroupVersionKind() *unversioned.GroupVersionKind {
 | 
			
		||||
	return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user