CompositionRevisionRefence only has Name, so LocalObjectReference

Signed-off-by: Hasan Turken <turkenh@gmail.com>
This commit is contained in:
Hasan Turken 2024-11-04 13:08:17 +03:00
parent 99dd2c0b51
commit 70499a4edd
No known key found for this signature in database
GPG Key ID: EE8BB9CB12F58415
8 changed files with 70 additions and 37 deletions

View File

@ -52,6 +52,7 @@ func (c *typedExternalClientWrapper[managed]) Create(ctx context.Context, mg res
} }
return c.c.Create(ctx, cr) return c.c.Create(ctx, cr)
} }
func (c *typedExternalClientWrapper[managed]) Update(ctx context.Context, mg resource.Managed) (ExternalUpdate, error) { func (c *typedExternalClientWrapper[managed]) Update(ctx context.Context, mg resource.Managed) (ExternalUpdate, error) {
cr, ok := mg.(managed) cr, ok := mg.(managed)
if !ok { if !ok {

View File

@ -35,7 +35,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/manager"
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
"github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/claim" "github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/reference"
) )
// Conditioned is a mock that implements Conditioned interface. // Conditioned is a mock that implements Conditioned interface.
@ -50,13 +50,13 @@ func (m *Conditioned) GetCondition(ct xpv1.ConditionType) xpv1.Condition {
} }
// ClaimReferencer is a mock that implements ClaimReferencer interface. // ClaimReferencer is a mock that implements ClaimReferencer interface.
type ClaimReferencer struct{ Ref *claim.Reference } type ClaimReferencer struct{ Ref *reference.Claim }
// SetClaimReference sets the ClaimReference. // SetClaimReference sets the ClaimReference.
func (m *ClaimReferencer) SetClaimReference(r *claim.Reference) { m.Ref = r } func (m *ClaimReferencer) SetClaimReference(r *reference.Claim) { m.Ref = r }
// GetClaimReference gets the ClaimReference. // GetClaimReference gets the ClaimReference.
func (m *ClaimReferencer) GetClaimReference() *claim.Reference { return m.Ref } func (m *ClaimReferencer) GetClaimReference() *reference.Claim { return m.Ref }
// ManagedResourceReferencer is a mock that implements ManagedResourceReferencer interface. // ManagedResourceReferencer is a mock that implements ManagedResourceReferencer interface.
type ManagedResourceReferencer struct{ Ref *corev1.ObjectReference } type ManagedResourceReferencer struct{ Ref *corev1.ObjectReference }
@ -184,15 +184,15 @@ func (m *CompositionSelector) SetCompositionSelector(s *metav1.LabelSelector) {
func (m *CompositionSelector) GetCompositionSelector() *metav1.LabelSelector { return m.Sel } func (m *CompositionSelector) GetCompositionSelector() *metav1.LabelSelector { return m.Sel }
// CompositionRevisionReferencer is a mock that implements CompositionRevisionReferencer interface. // CompositionRevisionReferencer is a mock that implements CompositionRevisionReferencer interface.
type CompositionRevisionReferencer struct{ Ref *corev1.ObjectReference } type CompositionRevisionReferencer struct{ Ref *corev1.LocalObjectReference }
// SetCompositionRevisionReference sets the CompositionRevisionReference. // SetCompositionRevisionReference sets the CompositionRevisionReference.
func (m *CompositionRevisionReferencer) SetCompositionRevisionReference(r *corev1.ObjectReference) { func (m *CompositionRevisionReferencer) SetCompositionRevisionReference(r *corev1.LocalObjectReference) {
m.Ref = r m.Ref = r
} }
// GetCompositionRevisionReference gets the CompositionRevisionReference. // GetCompositionRevisionReference gets the CompositionRevisionReference.
func (m *CompositionRevisionReferencer) GetCompositionRevisionReference() *corev1.ObjectReference { func (m *CompositionRevisionReferencer) GetCompositionRevisionReference() *corev1.LocalObjectReference {
return m.Ref return m.Ref
} }
@ -236,13 +236,13 @@ func (m *CompositeResourceDeleter) GetCompositeDeletePolicy() *xpv1.CompositeDel
} }
// CompositeResourceReferencer is a mock that implements CompositeResourceReferencer interface. // CompositeResourceReferencer is a mock that implements CompositeResourceReferencer interface.
type CompositeResourceReferencer struct{ Ref *corev1.ObjectReference } type CompositeResourceReferencer struct{ Ref *reference.Composite }
// SetResourceReference sets the composite resource reference. // SetResourceReference sets the composite resource reference.
func (m *CompositeResourceReferencer) SetResourceReference(p *corev1.ObjectReference) { m.Ref = p } func (m *CompositeResourceReferencer) SetResourceReference(p *reference.Composite) { m.Ref = p }
// GetResourceReference gets the composite resource reference. // GetResourceReference gets the composite resource reference.
func (m *CompositeResourceReferencer) GetResourceReference() *corev1.ObjectReference { return m.Ref } func (m *CompositeResourceReferencer) GetResourceReference() *reference.Composite { return m.Ref }
// ComposedResourcesReferencer is a mock that implements ComposedResourcesReferencer interface. // ComposedResourcesReferencer is a mock that implements ComposedResourcesReferencer interface.
type ComposedResourcesReferencer struct{ Refs []corev1.ObjectReference } type ComposedResourcesReferencer struct{ Refs []corev1.ObjectReference }

View File

@ -18,7 +18,6 @@ package resource
import ( import (
"context" "context"
"github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/reference"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -26,6 +25,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client"
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
"github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/reference"
) )
// A Conditioned may have conditions set or retrieved. Conditions are typically // A Conditioned may have conditions set or retrieved. Conditions are typically
@ -120,8 +120,8 @@ type CompositionReferencer interface {
// A CompositionRevisionReferencer may reference a specific revision of a // A CompositionRevisionReferencer may reference a specific revision of a
// composition of resources. // composition of resources.
type CompositionRevisionReferencer interface { type CompositionRevisionReferencer interface {
SetCompositionRevisionReference(ref *corev1.ObjectReference) SetCompositionRevisionReference(ref *corev1.LocalObjectReference)
GetCompositionRevisionReference() *corev1.ObjectReference GetCompositionRevisionReference() *corev1.LocalObjectReference
} }
// A CompositionRevisionSelector may reference a set of // A CompositionRevisionSelector may reference a set of
@ -153,8 +153,8 @@ type ComposedResourcesReferencer interface {
// A CompositeResourceReferencer can reference a composite resource. // A CompositeResourceReferencer can reference a composite resource.
type CompositeResourceReferencer interface { type CompositeResourceReferencer interface {
SetResourceReference(r *corev1.ObjectReference) SetResourceReference(r *reference.Composite)
GetResourceReference() *corev1.ObjectReference GetResourceReference() *reference.Composite
} }
// An EnvironmentConfigReferencer references a list of EnvironmentConfigs. // An EnvironmentConfigReferencer references a list of EnvironmentConfigs.

View File

@ -18,7 +18,6 @@ limitations under the License.
package claim package claim
import ( import (
"github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/reference"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@ -26,6 +25,7 @@ import (
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
"github.com/crossplane/crossplane-runtime/pkg/fieldpath" "github.com/crossplane/crossplane-runtime/pkg/fieldpath"
"github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/reference"
) )
// An Option modifies an unstructured composite resource claim. // An Option modifies an unstructured composite resource claim.
@ -98,8 +98,8 @@ func (c *Unstructured) SetCompositionReference(ref *corev1.ObjectReference) {
} }
// GetCompositionRevisionReference of this resource claim. // GetCompositionRevisionReference of this resource claim.
func (c *Unstructured) GetCompositionRevisionReference() *corev1.ObjectReference { func (c *Unstructured) GetCompositionRevisionReference() *corev1.LocalObjectReference {
out := &corev1.ObjectReference{} out := &corev1.LocalObjectReference{}
if err := fieldpath.Pave(c.Object).GetValueInto("spec.compositionRevisionRef", out); err != nil { if err := fieldpath.Pave(c.Object).GetValueInto("spec.compositionRevisionRef", out); err != nil {
return nil return nil
} }
@ -107,7 +107,7 @@ func (c *Unstructured) GetCompositionRevisionReference() *corev1.ObjectReference
} }
// SetCompositionRevisionReference of this resource claim. // SetCompositionRevisionReference of this resource claim.
func (c *Unstructured) SetCompositionRevisionReference(ref *corev1.ObjectReference) { func (c *Unstructured) SetCompositionRevisionReference(ref *corev1.LocalObjectReference) {
_ = fieldpath.Pave(c.Object).SetValue("spec.compositionRevisionRef", ref) _ = fieldpath.Pave(c.Object).SetValue("spec.compositionRevisionRef", ref)
} }

View File

@ -29,6 +29,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client"
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
"github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/reference"
) )
var _ client.Object = &Unstructured{} var _ client.Object = &Unstructured{}
@ -172,11 +173,11 @@ func TestCompositionReference(t *testing.T) {
} }
func TestCompositionRevisionReference(t *testing.T) { func TestCompositionRevisionReference(t *testing.T) {
ref := &corev1.ObjectReference{Namespace: "ns", Name: "cool"} ref := &corev1.LocalObjectReference{Name: "cool"}
cases := map[string]struct { cases := map[string]struct {
u *Unstructured u *Unstructured
set *corev1.ObjectReference set *corev1.LocalObjectReference
want *corev1.ObjectReference want *corev1.LocalObjectReference
}{ }{
"NewRef": { "NewRef": {
u: New(), u: New(),
@ -272,11 +273,11 @@ func TestCompositeDeletePolicy(t *testing.T) {
} }
func TestResourceReference(t *testing.T) { func TestResourceReference(t *testing.T) {
ref := &corev1.ObjectReference{Namespace: "ns", Name: "cool"} ref := &reference.Composite{Name: "cool"}
cases := map[string]struct { cases := map[string]struct {
u *Unstructured u *Unstructured
set *corev1.ObjectReference set *reference.Composite
want *corev1.ObjectReference want *reference.Composite
}{ }{
"NewRef": { "NewRef": {
u: New(), u: New(),
@ -297,7 +298,7 @@ func TestResourceReference(t *testing.T) {
} }
func TestClaimReference(t *testing.T) { func TestClaimReference(t *testing.T) {
ref := &Reference{Namespace: "ns", Name: "cool", APIVersion: "foo.com/v1", Kind: "Foo"} ref := &reference.Claim{Namespace: "ns", Name: "cool", APIVersion: "foo.com/v1", Kind: "Foo"}
u := &Unstructured{} u := &Unstructured{}
u.SetName(ref.Name) u.SetName(ref.Name)
u.SetNamespace(ref.Namespace) u.SetNamespace(ref.Namespace)

View File

@ -18,7 +18,6 @@ limitations under the License.
package composite package composite
import ( import (
"github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/reference"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@ -27,6 +26,7 @@ import (
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
"github.com/crossplane/crossplane-runtime/pkg/errors" "github.com/crossplane/crossplane-runtime/pkg/errors"
"github.com/crossplane/crossplane-runtime/pkg/fieldpath" "github.com/crossplane/crossplane-runtime/pkg/fieldpath"
"github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/reference"
) )
// An Option modifies an unstructured composite resource. // An Option modifies an unstructured composite resource.
@ -99,8 +99,8 @@ func (c *Unstructured) SetCompositionReference(ref *corev1.ObjectReference) {
} }
// GetCompositionRevisionReference of this Composite resource. // GetCompositionRevisionReference of this Composite resource.
func (c *Unstructured) GetCompositionRevisionReference() *corev1.ObjectReference { func (c *Unstructured) GetCompositionRevisionReference() *corev1.LocalObjectReference {
out := &corev1.ObjectReference{} out := &corev1.LocalObjectReference{}
if err := fieldpath.Pave(c.Object).GetValueInto("spec.compositionRevisionRef", out); err != nil { if err := fieldpath.Pave(c.Object).GetValueInto("spec.compositionRevisionRef", out); err != nil {
return nil return nil
} }
@ -108,7 +108,7 @@ func (c *Unstructured) GetCompositionRevisionReference() *corev1.ObjectReference
} }
// SetCompositionRevisionReference of this Composite resource. // SetCompositionRevisionReference of this Composite resource.
func (c *Unstructured) SetCompositionRevisionReference(ref *corev1.ObjectReference) { func (c *Unstructured) SetCompositionRevisionReference(ref *corev1.LocalObjectReference) {
_ = fieldpath.Pave(c.Object).SetValue("spec.compositionRevisionRef", ref) _ = fieldpath.Pave(c.Object).SetValue("spec.compositionRevisionRef", ref)
} }

View File

@ -30,7 +30,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client"
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
"github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/claim" "github.com/crossplane/crossplane-runtime/pkg/resource/unstructured/reference"
"github.com/crossplane/crossplane-runtime/pkg/test" "github.com/crossplane/crossplane-runtime/pkg/test"
) )
@ -259,11 +259,11 @@ func TestCompositionReference(t *testing.T) {
} }
func TestCompositionRevisionReference(t *testing.T) { func TestCompositionRevisionReference(t *testing.T) {
ref := &corev1.ObjectReference{Namespace: "ns", Name: "cool"} ref := &corev1.LocalObjectReference{Name: "cool"}
cases := map[string]struct { cases := map[string]struct {
u *Unstructured u *Unstructured
set *corev1.ObjectReference set *corev1.LocalObjectReference
want *corev1.ObjectReference want *corev1.LocalObjectReference
}{ }{
"NewRef": { "NewRef": {
u: New(), u: New(),
@ -334,11 +334,11 @@ func TestCompositionUpdatePolicy(t *testing.T) {
} }
func TestClaimReference(t *testing.T) { func TestClaimReference(t *testing.T) {
ref := &claim.Reference{Namespace: "ns", Name: "cool", APIVersion: "acme.com/v1", Kind: "Foo"} ref := &reference.Claim{Namespace: "ns", Name: "cool", APIVersion: "acme.com/v1", Kind: "Foo"}
cases := map[string]struct { cases := map[string]struct {
u *Unstructured u *Unstructured
set *claim.Reference set *reference.Claim
want *claim.Reference want *reference.Claim
}{ }{
"NewRef": { "NewRef": {
u: New(), u: New(),

View File

@ -1,5 +1,26 @@
/*
Copyright 2024 The Crossplane Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Package reference contains references to resources.
package reference package reference
import (
"k8s.io/apimachinery/pkg/runtime/schema"
)
// A Claim is a reference to a claim. // A Claim is a reference to a claim.
type Claim struct { type Claim struct {
// APIVersion of the referenced claim. // APIVersion of the referenced claim.
@ -26,3 +47,13 @@ type Composite struct {
// Name of the referenced composite. // Name of the referenced composite.
Name string `json:"name"` Name string `json:"name"`
} }
// GroupVersionKind returns the GroupVersionKind of the claim reference.
func (c *Claim) GroupVersionKind() schema.GroupVersionKind {
return schema.FromAPIVersionAndKind(c.APIVersion, c.Kind)
}
// GroupVersionKind returns the GroupVersionKind of the composite reference.
func (c *Composite) GroupVersionKind() schema.GroupVersionKind {
return schema.FromAPIVersionAndKind(c.APIVersion, c.Kind)
}