@@ -24,13 +24,12 @@ import (
24
24
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25
25
"k8s.io/apimachinery/pkg/runtime/schema"
26
26
"k8s.io/client-go/discovery"
27
- "k8s.io/client-go/rest"
28
27
"k8s.io/client-go/restmapper"
29
28
)
30
29
31
- // LazyRESTMapper is a RESTMapper that will lazily query the provided
30
+ // lazyRESTMapper is a RESTMapper that will lazily query the provided
32
31
// client for discovery information to do REST mappings.
33
- type LazyRESTMapper struct {
32
+ type lazyRESTMapper struct {
34
33
mapper meta.RESTMapper
35
34
client * discovery.DiscoveryClient
36
35
knownGroups map [string ]* restmapper.APIGroupResources
@@ -40,27 +39,17 @@ type LazyRESTMapper struct {
40
39
mu sync.Mutex
41
40
}
42
41
43
- // NewLazyRESTMapper initializes a LazyRESTMapper.
44
- func NewLazyRESTMapper (c * rest.Config ) (meta.RESTMapper , error ) {
45
- discoveryClient , err := discovery .NewDiscoveryClientForConfig (c )
46
- if err != nil {
47
- return nil , fmt .Errorf ("failed to create discovery client: %w" , err )
48
- }
49
-
50
- return NewLazyRESTMapperWithClient (discoveryClient )
51
- }
52
-
53
- // NewLazyRESTMapperWithClient initializes a LazyRESTMapper with a custom discovery client.
54
- func NewLazyRESTMapperWithClient (discoveryClient * discovery.DiscoveryClient ) (meta.RESTMapper , error ) {
55
- return & LazyRESTMapper {
42
+ // newLazyRESTMapperWithClient initializes a LazyRESTMapper with a custom discovery client.
43
+ func newLazyRESTMapperWithClient (discoveryClient * discovery.DiscoveryClient ) (meta.RESTMapper , error ) {
44
+ return & lazyRESTMapper {
56
45
mapper : restmapper .NewDiscoveryRESTMapper ([]* restmapper.APIGroupResources {}),
57
46
client : discoveryClient ,
58
47
knownGroups : map [string ]* restmapper.APIGroupResources {},
59
48
}, nil
60
49
}
61
50
62
51
// KindFor implements Mapper.KindFor.
63
- func (m * LazyRESTMapper ) KindFor (resource schema.GroupVersionResource ) (schema.GroupVersionKind , error ) {
52
+ func (m * lazyRESTMapper ) KindFor (resource schema.GroupVersionResource ) (schema.GroupVersionKind , error ) {
64
53
res , err := m .mapper .KindFor (resource )
65
54
if meta .IsNoMatchError (err ) {
66
55
if err = m .addKnownGroupAndReload (resource .Group , resource .Version ); err != nil {
@@ -74,7 +63,7 @@ func (m *LazyRESTMapper) KindFor(resource schema.GroupVersionResource) (schema.G
74
63
}
75
64
76
65
// KindsFor implements Mapper.KindsFor.
77
- func (m * LazyRESTMapper ) KindsFor (resource schema.GroupVersionResource ) ([]schema.GroupVersionKind , error ) {
66
+ func (m * lazyRESTMapper ) KindsFor (resource schema.GroupVersionResource ) ([]schema.GroupVersionKind , error ) {
78
67
res , err := m .mapper .KindsFor (resource )
79
68
if meta .IsNoMatchError (err ) {
80
69
if err = m .addKnownGroupAndReload (resource .Group , resource .Version ); err != nil {
@@ -88,7 +77,7 @@ func (m *LazyRESTMapper) KindsFor(resource schema.GroupVersionResource) ([]schem
88
77
}
89
78
90
79
// ResourceFor implements Mapper.ResourceFor.
91
- func (m * LazyRESTMapper ) ResourceFor (input schema.GroupVersionResource ) (schema.GroupVersionResource , error ) {
80
+ func (m * lazyRESTMapper ) ResourceFor (input schema.GroupVersionResource ) (schema.GroupVersionResource , error ) {
92
81
res , err := m .mapper .ResourceFor (input )
93
82
if meta .IsNoMatchError (err ) {
94
83
if err = m .addKnownGroupAndReload (input .Group , input .Version ); err != nil {
@@ -102,7 +91,7 @@ func (m *LazyRESTMapper) ResourceFor(input schema.GroupVersionResource) (schema.
102
91
}
103
92
104
93
// ResourcesFor implements Mapper.ResourcesFor.
105
- func (m * LazyRESTMapper ) ResourcesFor (input schema.GroupVersionResource ) ([]schema.GroupVersionResource , error ) {
94
+ func (m * lazyRESTMapper ) ResourcesFor (input schema.GroupVersionResource ) ([]schema.GroupVersionResource , error ) {
106
95
res , err := m .mapper .ResourcesFor (input )
107
96
if meta .IsNoMatchError (err ) {
108
97
if err = m .addKnownGroupAndReload (input .Group , input .Version ); err != nil {
@@ -116,7 +105,7 @@ func (m *LazyRESTMapper) ResourcesFor(input schema.GroupVersionResource) ([]sche
116
105
}
117
106
118
107
// RESTMapping implements Mapper.RESTMapping.
119
- func (m * LazyRESTMapper ) RESTMapping (gk schema.GroupKind , versions ... string ) (* meta.RESTMapping , error ) {
108
+ func (m * lazyRESTMapper ) RESTMapping (gk schema.GroupKind , versions ... string ) (* meta.RESTMapping , error ) {
120
109
res , err := m .mapper .RESTMapping (gk , versions ... )
121
110
if meta .IsNoMatchError (err ) {
122
111
if err = m .addKnownGroupAndReload (gk .Group , versions ... ); err != nil {
@@ -130,7 +119,7 @@ func (m *LazyRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*
130
119
}
131
120
132
121
// RESTMappings implements Mapper.RESTMappings.
133
- func (m * LazyRESTMapper ) RESTMappings (gk schema.GroupKind , versions ... string ) ([]* meta.RESTMapping , error ) {
122
+ func (m * lazyRESTMapper ) RESTMappings (gk schema.GroupKind , versions ... string ) ([]* meta.RESTMapping , error ) {
134
123
res , err := m .mapper .RESTMappings (gk , versions ... )
135
124
if meta .IsNoMatchError (err ) {
136
125
if err = m .addKnownGroupAndReload (gk .Group , versions ... ); err != nil {
@@ -144,13 +133,13 @@ func (m *LazyRESTMapper) RESTMappings(gk schema.GroupKind, versions ...string) (
144
133
}
145
134
146
135
// ResourceSingularizer implements Mapper.ResourceSingularizer.
147
- func (m * LazyRESTMapper ) ResourceSingularizer (resource string ) (string , error ) {
136
+ func (m * lazyRESTMapper ) ResourceSingularizer (resource string ) (string , error ) {
148
137
return m .mapper .ResourceSingularizer (resource )
149
138
}
150
139
151
140
// addKnownGroupAndReload reloads the mapper with updated information about missing API group.
152
141
// versions can be specified for partial updates, for instance for v1beta1 version only.
153
- func (m * LazyRESTMapper ) addKnownGroupAndReload (groupName string , versions ... string ) error {
142
+ func (m * lazyRESTMapper ) addKnownGroupAndReload (groupName string , versions ... string ) error {
154
143
m .mu .Lock ()
155
144
defer m .mu .Unlock ()
156
145
@@ -209,7 +198,7 @@ func (m *LazyRESTMapper) addKnownGroupAndReload(groupName string, versions ...st
209
198
}
210
199
211
200
// findAPIGroupByName returns API group by its name.
212
- func (m * LazyRESTMapper ) findAPIGroupByName (groupName string ) (metav1.APIGroup , error ) {
201
+ func (m * lazyRESTMapper ) findAPIGroupByName (groupName string ) (metav1.APIGroup , error ) {
213
202
// Ensure that required info about existing API groups is received and stored in the mapper.
214
203
// It will make 2 API calls to /api and /apis, but only once.
215
204
if m .apiGroups == nil {
@@ -234,7 +223,7 @@ func (m *LazyRESTMapper) findAPIGroupByName(groupName string) (metav1.APIGroup,
234
223
}
235
224
236
225
// fetchGroupVersionResources fetches the resources for the specified group and its versions.
237
- func (m * LazyRESTMapper ) fetchGroupVersionResources (groupName string , versions ... string ) (map [schema.GroupVersion ]* metav1.APIResourceList , error ) {
226
+ func (m * lazyRESTMapper ) fetchGroupVersionResources (groupName string , versions ... string ) (map [schema.GroupVersion ]* metav1.APIResourceList , error ) {
238
227
groupVersionResources := make (map [schema.GroupVersion ]* metav1.APIResourceList )
239
228
failedGroups := make (map [schema.GroupVersion ]error )
240
229
0 commit comments