Skip to content

Commit 9f70a84

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

File tree

3 files changed

+69
-59
lines changed

3 files changed

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

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)