Skip to content

Commit 6b9c159

Browse files
committed
refactor: move unrelated functions out of secrets.go
1 parent 7e14622 commit 6b9c159

File tree

3 files changed

+73
-60
lines changed

3 files changed

+73
-60
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Copyright 2025 Nutanix. All rights reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package utils
5+
6+
import (
7+
"context"
8+
"fmt"
9+
10+
corev1 "k8s.io/api/core/v1"
11+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
12+
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
13+
"sigs.k8s.io/cluster-api/controllers/external"
14+
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
15+
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
16+
)
17+
18+
// EnsureClusterOwnerReferenceForObject ensures that OwnerReference of the cluster is added on provided object.
19+
func EnsureClusterOwnerReferenceForObject(
20+
ctx context.Context,
21+
cl ctrlclient.Client,
22+
objectRef corev1.TypedLocalObjectReference,
23+
cluster *clusterv1.Cluster,
24+
) error {
25+
targetObj, err := getResourceFromTypedLocalObjectReference(
26+
ctx,
27+
cl,
28+
objectRef,
29+
cluster.Namespace,
30+
)
31+
if err != nil {
32+
return err
33+
}
34+
35+
err = controllerutil.SetOwnerReference(cluster, targetObj, cl.Scheme())
36+
if err != nil {
37+
return fmt.Errorf("failed to set cluster's owner reference on object: %w", err)
38+
}
39+
40+
err = cl.Update(ctx, targetObj)
41+
if err != nil {
42+
return fmt.Errorf("failed to update object with cluster's owner reference: %w", err)
43+
}
44+
return nil
45+
}
46+
47+
// getResourceFromTypedLocalObjectReference gets the resource from the provided TypedLocalObjectReference.
48+
func getResourceFromTypedLocalObjectReference(
49+
ctx context.Context,
50+
cl ctrlclient.Client,
51+
typedLocalObjectRef corev1.TypedLocalObjectReference,
52+
ns string,
53+
) (*unstructured.Unstructured, error) {
54+
apiVersion := corev1.SchemeGroupVersion.String()
55+
if typedLocalObjectRef.APIGroup != nil {
56+
apiVersion = *typedLocalObjectRef.APIGroup
57+
}
58+
59+
objectRef := &corev1.ObjectReference{
60+
APIVersion: apiVersion,
61+
Kind: typedLocalObjectRef.Kind,
62+
Name: typedLocalObjectRef.Name,
63+
Namespace: ns,
64+
}
65+
66+
targetObj, err := external.Get(ctx, cl, objectRef)
67+
if err != nil {
68+
return nil, fmt.Errorf("failed to get resource from object reference: %w", err)
69+
}
70+
71+
return targetObj, nil
72+
}

pkg/handlers/utils/secrets_test.go renamed to pkg/handlers/utils/owner_reference_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2024 Nutanix. All rights reserved.
1+
// Copyright 2025 Nutanix. All rights reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

44
package utils

pkg/handlers/utils/secrets.go

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,9 @@ import (
99

1010
corev1 "k8s.io/api/core/v1"
1111
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12-
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
1312
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
14-
"sigs.k8s.io/cluster-api/controllers/external"
1513
"sigs.k8s.io/cluster-api/controllers/remote"
1614
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
17-
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
1815

1916
"github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api/v1alpha1"
2017
"github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/common/pkg/k8s/client"
@@ -66,62 +63,6 @@ func CopySecretToRemoteCluster(
6663
return nil
6764
}
6865

69-
// EnsureClusterOwnerReferenceForObject ensures that OwnerReference of the cluster is added on provided object.
70-
func EnsureClusterOwnerReferenceForObject(
71-
ctx context.Context,
72-
cl ctrlclient.Client,
73-
objectRef corev1.TypedLocalObjectReference,
74-
cluster *clusterv1.Cluster,
75-
) error {
76-
targetObj, err := GetResourceFromTypedLocalObjectReference(
77-
ctx,
78-
cl,
79-
objectRef,
80-
cluster.Namespace,
81-
)
82-
if err != nil {
83-
return err
84-
}
85-
86-
err = controllerutil.SetOwnerReference(cluster, targetObj, cl.Scheme())
87-
if err != nil {
88-
return fmt.Errorf("failed to set cluster's owner reference on object: %w", err)
89-
}
90-
91-
err = cl.Update(ctx, targetObj)
92-
if err != nil {
93-
return fmt.Errorf("failed to update object with cluster's owner reference: %w", err)
94-
}
95-
return nil
96-
}
97-
98-
// GetResourceFromTypedLocalObjectReference gets the resource from the provided TypedLocalObjectReference.
99-
func GetResourceFromTypedLocalObjectReference(
100-
ctx context.Context,
101-
cl ctrlclient.Client,
102-
typedLocalObjectRef corev1.TypedLocalObjectReference,
103-
ns string,
104-
) (*unstructured.Unstructured, error) {
105-
apiVersion := corev1.SchemeGroupVersion.String()
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,
115-
}
116-
117-
targetObj, err := external.Get(ctx, cl, objectRef)
118-
if err != nil {
119-
return nil, fmt.Errorf("failed to get resource from object reference: %w", err)
120-
}
121-
122-
return targetObj, nil
123-
}
124-
12566
func getSecretForCluster(
12667
ctx context.Context,
12768
c ctrlclient.Client,

0 commit comments

Comments
 (0)