Skip to content

Commit c49c994

Browse files
committed
chore(k8s): Move getObject func to k8s package
1 parent 25cee02 commit c49c994

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

internal/controller/resourcetemplate/reconciler.go

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/go-logr/logr"
1010
"github.com/google/wire"
1111
"github.com/tommy351/pullup/internal/controller"
12+
"github.com/tommy351/pullup/internal/k8s"
1213
"github.com/tommy351/pullup/pkg/apis/pullup/v1beta1"
1314
corev1 "k8s.io/api/core/v1"
1415
"k8s.io/apimachinery/pkg/api/errors"
@@ -163,25 +164,7 @@ func (r *Reconciler) deleteInactiveResources(ctx context.Context, rt *v1beta1.Re
163164
}
164165

165166
func (r *Reconciler) getObject(ctx context.Context, gvk schema.GroupVersionKind, key client.ObjectKey) (runtime.Object, error) {
166-
obj, err := r.Scheme.New(gvk)
167-
if err != nil {
168-
if !runtime.IsNotRegisteredError(err) {
169-
return nil, fmt.Errorf("failed to create a new API object: %w", err)
170-
}
171-
172-
un := new(unstructured.Unstructured)
173-
un.SetGroupVersionKind(gvk)
174-
obj = un
175-
}
176-
177-
// Use APIReader to disable the cache
178-
if err := r.APIReader.Get(ctx, key, obj); err != nil {
179-
return nil, fmt.Errorf("failed to get resource: %w", err)
180-
}
181-
182-
obj.GetObjectKind().SetGroupVersionKind(gvk)
183-
184-
return obj, nil
167+
return k8s.GetObject(ctx, r.APIReader, r.Scheme, gvk, key)
185168
}
186169

187170
func (r *Reconciler) newEmptyObject(gvk schema.GroupVersionKind, key client.ObjectKey) (runtime.Object, error) {

internal/k8s/object.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package k8s
22

33
import (
4+
"context"
45
"encoding/json"
56
"fmt"
67

78
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
89
"k8s.io/apimachinery/pkg/runtime"
10+
"k8s.io/apimachinery/pkg/runtime/schema"
11+
"sigs.k8s.io/controller-runtime/pkg/client"
912
)
1013

1114
func ToUnstructured(data interface{}) (*unstructured.Unstructured, error) {
@@ -72,3 +75,25 @@ func MapObjects(input []runtime.Object, fn func(runtime.Object) error) ([]runtim
7275

7376
return output, nil
7477
}
78+
79+
func GetObject(ctx context.Context, reader client.Reader, scheme *runtime.Scheme, gvk schema.GroupVersionKind, key client.ObjectKey) (runtime.Object, error) {
80+
obj, err := scheme.New(gvk)
81+
if err != nil {
82+
if !runtime.IsNotRegisteredError(err) {
83+
return nil, fmt.Errorf("failed to create a new API object: %w", err)
84+
}
85+
86+
un := new(unstructured.Unstructured)
87+
un.SetGroupVersionKind(gvk)
88+
obj = un
89+
}
90+
91+
// Use APIReader to disable the cache
92+
if err := reader.Get(ctx, key, obj); err != nil {
93+
return nil, fmt.Errorf("failed to get resource: %w", err)
94+
}
95+
96+
obj.GetObjectKind().SetGroupVersionKind(gvk)
97+
98+
return obj, nil
99+
}

0 commit comments

Comments
 (0)