Skip to content

Commit a02aeab

Browse files
committed
refactor: modified GetResourceFromTypedLocalObjectReference func to use external.Get() method
1 parent 0db9b0f commit a02aeab

File tree

2 files changed

+32
-16
lines changed

2 files changed

+32
-16
lines changed

pkg/handlers/utils/secrets.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010
corev1 "k8s.io/api/core/v1"
1111
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1212
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
13-
"k8s.io/apimachinery/pkg/runtime/schema"
1413
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
14+
"sigs.k8s.io/cluster-api/controllers/external"
1515
"sigs.k8s.io/cluster-api/controllers/remote"
1616
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
1717
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -80,7 +80,7 @@ func EnsureClusterOwnerReferenceForObject(
8080
cluster.Namespace,
8181
)
8282
if err != nil {
83-
return fmt.Errorf("failed to get object from TypedLocalObjectReference: %w", err)
83+
return err
8484
}
8585

8686
err = controllerutil.SetOwnerReference(cluster, targetObj, cl.Scheme())
@@ -99,23 +99,24 @@ func EnsureClusterOwnerReferenceForObject(
9999
func GetResourceFromTypedLocalObjectReference(
100100
ctx context.Context,
101101
cl ctrlclient.Client,
102-
objectRef *corev1.TypedLocalObjectReference,
102+
typedLocalObjectRef *corev1.TypedLocalObjectReference,
103103
ns string,
104104
) (*unstructured.Unstructured, error) {
105-
targetObj := &unstructured.Unstructured{}
106-
107105
apiVersion := corev1.SchemeGroupVersion.String()
108-
if objectRef.APIGroup != nil {
109-
apiVersion = *objectRef.APIGroup
106+
if typedLocalObjectRef.APIGroup != nil {
107+
apiVersion = *typedLocalObjectRef.APIGroup
108+
}
109+
110+
objectRef := &corev1.ObjectReference{
111+
APIVersion: apiVersion,
112+
Kind: typedLocalObjectRef.Kind,
113+
Name: typedLocalObjectRef.Name,
114+
Namespace: ns,
110115
}
111116

112-
targetObj.SetGroupVersionKind(schema.FromAPIVersionAndKind(apiVersion, objectRef.Kind))
113-
err := cl.Get(ctx, ctrlclient.ObjectKey{
114-
Namespace: ns,
115-
Name: objectRef.Name,
116-
}, targetObj)
117+
targetObj, err := external.Get(ctx, cl, objectRef, ns)
117118
if err != nil {
118-
return nil, err
119+
return nil, fmt.Errorf("failed to get resource from object reference: %w", err)
119120
}
120121

121122
return targetObj, nil

pkg/handlers/utils/secrets_test.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ package utils
55

66
import (
77
"context"
8+
"fmt"
89
"testing"
910

11+
"github.com/pkg/errors"
1012
"github.com/stretchr/testify/assert"
1113
"github.com/stretchr/testify/require"
1214
corev1 "k8s.io/api/core/v1"
13-
"k8s.io/apimachinery/pkg/api/errors"
15+
apiErrors "k8s.io/apimachinery/pkg/api/errors"
1416
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1517
"k8s.io/apimachinery/pkg/runtime"
1618
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
@@ -97,7 +99,16 @@ func Test_EnsureOwnerReferenceForSecret(t *testing.T) {
9799
client: buildFakeClient(t, testSecret, testCluster),
98100
secretName: "missing-secret",
99101
cluster: testCluster,
100-
wantErr: errors.NewNotFound(corev1.Resource("secrets"), "missing-secret"),
102+
wantErr: fmt.Errorf(
103+
"failed to get resource from object reference: %w",
104+
errors.Wrapf(
105+
apiErrors.NewNotFound(corev1.Resource("secrets"), "missing-secret"),
106+
"failed to retrieve %s external object %q/%q",
107+
"Secret",
108+
"",
109+
"missing-secret",
110+
),
111+
),
101112
},
102113
}
103114
for _, tt := range tests {
@@ -113,10 +124,14 @@ func Test_EnsureOwnerReferenceForSecret(t *testing.T) {
113124
},
114125
tt.cluster,
115126
)
116-
require.Equal(t, tt.wantErr, err)
127+
117128
if tt.wantErr != nil {
129+
assert.Equal(t, tt.wantErr.Error(), err.Error())
118130
return
131+
} else {
132+
require.NoError(t, err)
119133
}
134+
120135
// verify that the owner reference was added
121136
secret := &corev1.Secret{}
122137
err = tt.client.Get(

0 commit comments

Comments
 (0)