diff --git a/apis/common/v1/resource.go b/apis/common/v1/resource.go index 9919c5f..edb4331 100644 --- a/apis/common/v1/resource.go +++ b/apis/common/v1/resource.go @@ -122,9 +122,9 @@ type Reference struct { Policy *Policy `json:"policy,omitempty"` } -// A TypedReference refers to an object by Name, Kind, and APIVersion. It is -// commonly used to reference cluster-scoped objects or objects where the -// namespace is already known. +// A TypedReference refers to an object by Name, Namespace, Kind, and +// APIVersion. It is commonly used to reference cluster-scoped objects +// and can also be used for namespace-scoped objects. type TypedReference struct { // APIVersion of the referenced object. APIVersion string `json:"apiVersion"` @@ -135,6 +135,10 @@ type TypedReference struct { // Name of the referenced object. Name string `json:"name"` + // Namespace of the referenced object. + // +optional + Namespace string `json:"namespace,omitempty"` + // UID of the referenced object. // +optional UID types.UID `json:"uid,omitempty"` diff --git a/pkg/meta/meta.go b/pkg/meta/meta.go index 7528ea0..52c268e 100644 --- a/pkg/meta/meta.go +++ b/pkg/meta/meta.go @@ -87,6 +87,7 @@ func TypedReferenceTo(o metav1.Object, of schema.GroupVersionKind) *xpv1.TypedRe APIVersion: v, Kind: k, Name: o.GetName(), + Namespace: o.GetNamespace(), UID: o.GetUID(), } } diff --git a/pkg/meta/meta_test.go b/pkg/meta/meta_test.go index 9759983..cd061bb 100644 --- a/pkg/meta/meta_test.go +++ b/pkg/meta/meta_test.go @@ -112,6 +112,7 @@ func TestTypedReferenceTo(t *testing.T) { want: &xpv1.TypedReference{ APIVersion: groupVersion, Kind: kind, + Namespace: namespace, Name: name, UID: uid, },