Skip to content

Commit 5749d97

Browse files
Chaunceyctxc00664376
authored and
c00664376
committed
add CodecFactoryOptions for codecfactory
1 parent a9b7c2d commit 5749d97

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

pkg/cache/cache.go

+11-5
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ type Options struct {
140140
// Scheme is the scheme to use for mapping objects to GroupVersionKinds
141141
Scheme *runtime.Scheme
142142

143+
// CodecFactoryStrict/CodecFactoryPretty are used to indicate whether enable Strict/Pretty mode of CodecFactory
144+
CodecFactoryStrict bool
145+
CodecFactoryPretty bool
146+
143147
// Mapper is the RESTMapper to use for mapping GroupVersionKinds to Resources
144148
Mapper meta.RESTMapper
145149

@@ -419,11 +423,13 @@ func newCache(restConfig *rest.Config, opts Options) newCacheFunc {
419423
return &informerCache{
420424
scheme: opts.Scheme,
421425
Informers: internal.NewInformers(restConfig, &internal.InformersOpts{
422-
HTTPClient: opts.HTTPClient,
423-
Scheme: opts.Scheme,
424-
Mapper: opts.Mapper,
425-
ResyncPeriod: *opts.SyncPeriod,
426-
Namespace: namespace,
426+
HTTPClient: opts.HTTPClient,
427+
Scheme: opts.Scheme,
428+
CodecFactoryStrict: opts.CodecFactoryStrict,
429+
CodecFactoryPretty: opts.CodecFactoryPretty,
430+
Mapper: opts.Mapper,
431+
ResyncPeriod: *opts.SyncPeriod,
432+
Namespace: namespace,
427433
Selector: internal.Selector{
428434
Label: config.LabelSelector,
429435
Field: config.FieldSelector,

pkg/cache/internal/informers.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ import (
4444
type InformersOpts struct {
4545
HTTPClient *http.Client
4646
Scheme *runtime.Scheme
47+
CodecFactoryStrict bool
48+
CodecFactoryPretty bool
4749
Mapper meta.RESTMapper
4850
ResyncPeriod time.Duration
4951
Namespace string
@@ -61,6 +63,13 @@ func NewInformers(config *rest.Config, options *InformersOpts) *Informers {
6163
if options.NewInformer != nil {
6264
newInformer = *options.NewInformer
6365
}
66+
var mutators []serializer.CodecFactoryOptionsMutator
67+
if options.CodecFactoryStrict {
68+
mutators = append(mutators, serializer.EnableStrict)
69+
}
70+
if options.CodecFactoryPretty {
71+
mutators = append(mutators, serializer.EnablePretty)
72+
}
6473
return &Informers{
6574
config: config,
6675
httpClient: options.HTTPClient,
@@ -71,7 +80,7 @@ func NewInformers(config *rest.Config, options *InformersOpts) *Informers {
7180
Unstructured: make(map[schema.GroupVersionKind]*Cache),
7281
Metadata: make(map[schema.GroupVersionKind]*Cache),
7382
},
74-
codecs: serializer.NewCodecFactory(options.Scheme),
83+
codecs: serializer.NewCodecFactory(options.Scheme, mutators...),
7584
paramCodec: runtime.NewParameterCodec(options.Scheme),
7685
resync: options.ResyncPeriod,
7786
startWait: make(chan struct{}),

pkg/client/client.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ type Options struct {
4444
// Scheme, if provided, will be used to map go structs to GroupVersionKinds
4545
Scheme *runtime.Scheme
4646

47+
// CodecFactoryStrict/CodecFactoryPretty, if provided, will be used to indicate whether enable Strict/Pretty mode of CodecFactory
48+
CodecFactoryStrict bool
49+
CodecFactoryPretty bool
50+
4751
// Mapper, if provided, will be used to map GroupVersionKinds to Resources
4852
Mapper meta.RESTMapper
4953

@@ -145,12 +149,20 @@ func newClient(config *rest.Config, options Options) (*client, error) {
145149
}
146150
}
147151

152+
var mutators []serializer.CodecFactoryOptionsMutator
153+
if options.CodecFactoryStrict {
154+
mutators = append(mutators, serializer.EnableStrict)
155+
}
156+
if options.CodecFactoryPretty {
157+
mutators = append(mutators, serializer.EnablePretty)
158+
}
159+
148160
resources := &clientRestResources{
149161
httpClient: options.HTTPClient,
150162
config: config,
151163
scheme: options.Scheme,
152164
mapper: options.Mapper,
153-
codecs: serializer.NewCodecFactory(options.Scheme),
165+
codecs: serializer.NewCodecFactory(options.Scheme, mutators...),
154166

155167
structuredResourceByType: make(map[schema.GroupVersionKind]*resourceMeta),
156168
unstructuredResourceByType: make(map[schema.GroupVersionKind]*resourceMeta),

0 commit comments

Comments
 (0)