Skip to content

Commit 61134a0

Browse files
committed
Return an error instead of only logging
1 parent 4a96a78 commit 61134a0

File tree

4 files changed

+32
-11
lines changed

4 files changed

+32
-11
lines changed

internal/discovery/discovery.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,16 @@ func (r *CRDiscoverer) PollForCacheUpdates(
216216
// Update the list of enabled custom resources.
217217
var enabledCustomResources []string
218218
for _, factory := range customFactories {
219-
gvrString := util.GVRFromType(factory.Name(), factory.ExpectedType()).String()
219+
gvr, err := util.GVRFromType(factory.Name(), factory.ExpectedType())
220+
if err != nil {
221+
klog.ErrorS(err, "failed to update custom resource stores")
222+
}
223+
var gvrString string
224+
if gvr != nil {
225+
gvrString = gvr.String()
226+
} else {
227+
gvrString = factory.Name()
228+
}
220229
enabledCustomResources = append(enabledCustomResources, gvrString)
221230
}
222231
// Create clients for discovered factories.

internal/store/builder.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,10 @@ func (b *Builder) DefaultGenerateCustomResourceStoresFunc() ksmtypes.BuildCustom
197197
func (b *Builder) WithCustomResourceStoreFactories(fs ...customresource.RegistryFactory) {
198198
for i := range fs {
199199
f := fs[i]
200-
gvr := util.GVRFromType(f.Name(), f.ExpectedType())
200+
gvr, err := util.GVRFromType(f.Name(), f.ExpectedType())
201+
if err != nil {
202+
klog.ErrorS(err, "Failed to get GVR from type", "resourceName", f.Name(), "expectedType", f.ExpectedType())
203+
}
201204
var gvrString string
202205
if gvr != nil {
203206
gvrString = gvr.String()
@@ -553,7 +556,10 @@ func (b *Builder) buildCustomResourceStores(resourceName string,
553556

554557
familyHeaders := generator.ExtractMetricFamilyHeaders(metricFamilies)
555558

556-
gvr := util.GVRFromType(resourceName, expectedType)
559+
gvr, err := util.GVRFromType(resourceName, expectedType)
560+
if err != nil {
561+
klog.ErrorS(err, "Failed to get GVR from type", "resourceName", resourceName, "expectedType", expectedType)
562+
}
557563
var gvrString string
558564
if gvr != nil {
559565
gvrString = gvr.String()

pkg/customresourcestate/config.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,11 @@ func FromConfig(decoder ConfigDecoder, discovererInstance *discovery.CRDiscovere
204204
if err != nil {
205205
return nil, fmt.Errorf("failed to create metrics factory for %s: %w", resource.GroupVersionKind, err)
206206
}
207-
gvrString := util.GVRFromType(factory.Name(), factory.ExpectedType()).String()
207+
gvr, err := util.GVRFromType(factory.Name(), factory.ExpectedType())
208+
if err != nil {
209+
return nil, fmt.Errorf("failed to create GVR for %s: %w", resource.GroupVersionKind, err)
210+
}
211+
gvrString := gvr.String()
208212
if _, ok := factoriesIndex[gvrString]; ok {
209213
klog.InfoS("reloaded factory", "GVR", gvrString)
210214
}

pkg/util/utils.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,11 @@ func CreateCustomResourceClients(apiserver string, kubeconfig string, factories
9797
if err != nil {
9898
return nil, err
9999
}
100-
gvrString := GVRFromType(f.Name(), f.ExpectedType()).String()
101-
customResourceClients[gvrString] = customResourceClient
100+
gvr, err := GVRFromType(f.Name(), f.ExpectedType())
101+
if err != nil {
102+
return nil, err
103+
}
104+
customResourceClients[gvr.String()] = customResourceClient
102105
}
103106
return customResourceClients, nil
104107
}
@@ -137,15 +140,14 @@ func CreateDynamicClient(apiserver string, kubeconfig string) (*dynamic.DynamicC
137140
}
138141

139142
// GVRFromType returns the GroupVersionResource for a given type.
140-
func GVRFromType(resourceName string, expectedType interface{}) *schema.GroupVersionResource {
143+
func GVRFromType(resourceName string, expectedType interface{}) (*schema.GroupVersionResource, error) {
141144
if _, ok := expectedType.(*testUnstructuredMock.Foo); ok {
142145
// testUnstructuredMock.Foo is a mock type for testing
143-
return nil
146+
return nil, nil
144147
}
145148
t, err := meta.TypeAccessor(expectedType)
146149
if err != nil {
147-
klog.ErrorS(err, "Failed to get type accessor", "expectedType", expectedType)
148-
return nil
150+
return nil, fmt.Errorf("Failed to get type accessor for %T: %w", expectedType, err)
149151
}
150152
apiVersion := t.GetAPIVersion()
151153
g, v, found := strings.Cut(apiVersion, "/")
@@ -158,7 +160,7 @@ func GVRFromType(resourceName string, expectedType interface{}) *schema.GroupVer
158160
Group: g,
159161
Version: v,
160162
Resource: r,
161-
}
163+
}, nil
162164
}
163165

164166
// GatherAndCount gathers all metrics from the provided Gatherer and counts

0 commit comments

Comments
 (0)