@@ -62,8 +62,7 @@ type Builder struct {
62
62
customResourceClients map [string ]interface {}
63
63
vpaClient vpaclientset.Interface
64
64
namespaces options.NamespaceList
65
- namespaceFilter string
66
- nodeNameFilter string
65
+ fieldSelectorFilter string
67
66
ctx context.Context
68
67
enabledResources []string
69
68
familyGeneratorFilter generator.FamilyGeneratorFilter
@@ -107,20 +106,27 @@ func (b *Builder) WithEnabledResources(r []string) error {
107
106
return nil
108
107
}
109
108
110
- // WithNamespaces sets the namespaces property of a Builder.
111
- func (b * Builder ) WithNamespaces (n options.NamespaceList , nsFilter string ) {
112
- b .namespaces = n
113
- b .namespaceFilter = nsFilter
109
+ // WithFieldSelectorFilter sets the fieldSelector property of a Builder.
110
+ func (b * Builder ) WithFieldSelectorFilter (fieldSelectorFilter string ) {
111
+ b .fieldSelectorFilter = fieldSelectorFilter
114
112
}
115
113
116
- // WithNodeName sets the nodename property of a Builder.
117
- func (b * Builder ) WithNodeName ( nodeNameFilter string ) {
118
- b .nodeNameFilter = nodeNameFilter
114
+ // WithNamespaces sets the namespaces property of a Builder.
115
+ func (b * Builder ) WithNamespaces ( n options. NamespaceList ) {
116
+ b .namespaces = n
119
117
}
120
118
121
- // MergeFieldSelector merges two fieldSelectors using AND operator.
122
- func (b * Builder ) MergeFieldSelector (s1 string , s2 string ) (string , error ) {
123
- return options .MergeFieldSelector (s1 , s2 )
119
+ // MergeFieldSelector merges multiple fieldSelectors using AND operator.
120
+ func (b * Builder ) MergeFieldSelector (selectors []string ) (string , error ) {
121
+ var err error
122
+ merged := options .EmptyFieldSelector ()
123
+ for _ , s := range selectors {
124
+ merged , err = options .MergeFieldSelector (merged , s )
125
+ if err != nil {
126
+ return "" , err
127
+ }
128
+ }
129
+ return merged , nil
124
130
}
125
131
126
132
// WithSharding sets the shard and totalShards property of a Builder.
@@ -478,12 +484,10 @@ func (b *Builder) buildStores(
478
484
familyHeaders ,
479
485
composedMetricGenFuncs ,
480
486
)
481
- merged , err := b .MergeFieldSelector (b .namespaceFilter , b .nodeNameFilter )
482
- if err != nil {
483
- panic (fmt .Sprintf ("Failed to merge fieldSelector %s and %s" , b .namespaceFilter , b .nodeNameFilter ))
487
+ if b .fieldSelectorFilter != "" {
488
+ klog .Infof ("FieldSelector is used " , b .fieldSelectorFilter )
484
489
}
485
- klog .Infof ("FieldSelector is used " , merged )
486
- listWatcher := listWatchFunc (b .kubeClient , v1 .NamespaceAll , merged )
490
+ listWatcher := listWatchFunc (b .kubeClient , v1 .NamespaceAll , b .fieldSelectorFilter )
487
491
b .startReflector (expectedType , store , listWatcher , useAPIServerCache )
488
492
return []cache.Store {store }
489
493
}
@@ -494,12 +498,10 @@ func (b *Builder) buildStores(
494
498
familyHeaders ,
495
499
composedMetricGenFuncs ,
496
500
)
497
- merged , err := b .MergeFieldSelector (b .namespaceFilter , b .nodeNameFilter )
498
- if err != nil {
499
- panic (fmt .Sprintf ("Failed to merge fieldSelector %s and %s" , b .namespaceFilter , b .nodeNameFilter ))
501
+ if b .fieldSelectorFilter != "" {
502
+ klog .Infof ("FieldSelector is used " , b .fieldSelectorFilter )
500
503
}
501
- klog .Infof ("FieldSelector is used " , merged )
502
- listWatcher := listWatchFunc (b .kubeClient , ns , merged )
504
+ listWatcher := listWatchFunc (b .kubeClient , ns , b .fieldSelectorFilter )
503
505
b .startReflector (expectedType , store , listWatcher , useAPIServerCache )
504
506
stores = append (stores , store )
505
507
}
@@ -529,12 +531,10 @@ func (b *Builder) buildCustomResourceStores(resourceName string,
529
531
familyHeaders ,
530
532
composedMetricGenFuncs ,
531
533
)
532
- merged , err := b .MergeFieldSelector (b .namespaceFilter , b .nodeNameFilter )
533
- if err != nil {
534
- panic (fmt .Sprintf ("Failed to merge fieldSelector %s and %s" , b .namespaceFilter , b .nodeNameFilter ))
534
+ if b .fieldSelectorFilter != "" {
535
+ klog .Infof ("FieldSelector is used " , b .fieldSelectorFilter )
535
536
}
536
- klog .Infof ("FieldSelector is used " , merged )
537
- listWatcher := listWatchFunc (customResourceClient , v1 .NamespaceAll , merged )
537
+ listWatcher := listWatchFunc (customResourceClient , v1 .NamespaceAll , b .fieldSelectorFilter )
538
538
b .startReflector (expectedType , store , listWatcher , useAPIServerCache )
539
539
return []cache.Store {store }
540
540
}
@@ -545,12 +545,8 @@ func (b *Builder) buildCustomResourceStores(resourceName string,
545
545
familyHeaders ,
546
546
composedMetricGenFuncs ,
547
547
)
548
- merged , err := b .MergeFieldSelector (b .namespaceFilter , b .nodeNameFilter )
549
- if err != nil {
550
- panic (fmt .Sprintf ("Failed to merge fieldSelector %s and %s" , b .namespaceFilter , b .nodeNameFilter ))
551
- }
552
- klog .Infof ("FieldSelector is used " , merged )
553
- listWatcher := listWatchFunc (customResourceClient , ns , merged )
548
+ klog .Infof ("FieldSelector is used " , b .fieldSelectorFilter )
549
+ listWatcher := listWatchFunc (customResourceClient , ns , b .fieldSelectorFilter )
554
550
b .startReflector (expectedType , store , listWatcher , useAPIServerCache )
555
551
stores = append (stores , store )
556
552
}
0 commit comments