From 1e3fc3331f2de7175258aeafb6501bcf0ca78b5d Mon Sep 17 00:00:00 2001 From: Shuxian Cai Date: Thu, 7 Sep 2023 23:09:34 +0000 Subject: [PATCH] Enable Namespace as an optional field in TypedReference Signed-off-by: Shuxian Cai --- apis/common/v1/resource.go | 10 +++++++--- pkg/meta/meta.go | 1 + pkg/meta/meta_test.go | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/apis/common/v1/resource.go b/apis/common/v1/resource.go index 5e40a560f..92816504a 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 7528ea060..52c268e5c 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 4936292e7..be431b406 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, },