diff --git a/pkg/api/ref.go b/pkg/api/ref.go index 36eb647eb19..b1a46267b16 100644 --- a/pkg/api/ref.go +++ b/pkg/api/ref.go @@ -36,6 +36,10 @@ func GetReference(obj runtime.Object) (*ObjectReference, error) { if obj == nil { return nil, ErrNilObject } + if ref, ok := obj.(*ObjectReference); ok { + // Don't make a reference to a reference. + return ref, nil + } meta, err := meta.Accessor(obj) if err != nil { return nil, err @@ -57,3 +61,7 @@ func GetReference(obj runtime.Object) (*ObjectReference, error) { ResourceVersion: meta.ResourceVersion(), }, nil } + +// Allow 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() {}