Skip to content

Commit 2612b84

Browse files
authored
Merge pull request #2129 from marquiz/devel/api-controller-cleanup
nfd-master: clean up api controller
2 parents 3bc62f4 + 00b174a commit 2612b84

File tree

1 file changed

+43
-52
lines changed

1 file changed

+43
-52
lines changed

pkg/nfd-master/nfd-api-controller.go

Lines changed: 43 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ type nfdController struct {
5252
}
5353

5454
type nfdApiControllerOptions struct {
55-
DisableNodeFeature bool
5655
DisableNodeFeatureGroup bool
5756
ResyncPeriod time.Duration
5857
K8sClient k8sclient.Interface
@@ -92,72 +91,64 @@ func newNfdController(config *restclient.Config, nfdApiControllerOptions nfdApiC
9291
informerFactory := nfdinformers.NewSharedInformerFactory(nfdClient, nfdApiControllerOptions.ResyncPeriod)
9392

9493
// Add informer for NodeFeature objects
95-
if !nfdApiControllerOptions.DisableNodeFeature {
96-
tweakListOpts := func(opts *metav1.ListOptions) {
97-
// Tweak list opts on initial sync to avoid timeouts on the apiserver.
98-
// NodeFeature objects are huge and the Kubernetes apiserver
99-
// (v1.30) experiences http handler timeouts when the resource
100-
// version is set to some non-empty value (TODO: find out why).
101-
if opts.ResourceVersion == "0" {
102-
opts.ResourceVersion = ""
103-
}
94+
tweakListOpts := func(opts *metav1.ListOptions) {
95+
// Tweak list opts on initial sync to avoid timeouts on the apiserver.
96+
// NodeFeature objects are huge and the Kubernetes apiserver
97+
// (v1.30) experiences http handler timeouts when the resource
98+
// version is set to some non-empty value (TODO: find out why).
99+
if opts.ResourceVersion == "0" {
100+
opts.ResourceVersion = ""
104101
}
105-
featureInformer := nfdinformersv1alpha1.New(informerFactory, "", tweakListOpts).NodeFeatures()
106-
if _, err := featureInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
107-
AddFunc: func(obj interface{}) {
108-
nfr := obj.(*nfdv1alpha1.NodeFeature)
109-
klog.V(2).InfoS("NodeFeature added", "nodefeature", klog.KObj(nfr))
110-
if c.isNamespaceSelected(nfr.Namespace) {
111-
c.updateOneNode("NodeFeature", nfr)
112-
} else {
113-
klog.V(2).InfoS("NodeFeature namespace is not selected, skipping", "nodefeature", klog.KObj(nfr))
114-
}
115-
if !nfdApiControllerOptions.DisableNodeFeatureGroup {
116-
c.updateAllNodeFeatureGroups()
117-
}
118-
},
119-
UpdateFunc: func(oldObj, newObj interface{}) {
120-
nfr := newObj.(*nfdv1alpha1.NodeFeature)
121-
klog.V(2).InfoS("NodeFeature updated", "nodefeature", klog.KObj(nfr))
122-
c.updateOneNode("NodeFeature", nfr)
123-
if !nfdApiControllerOptions.DisableNodeFeatureGroup {
124-
c.updateAllNodeFeatureGroups()
125-
}
126-
},
127-
DeleteFunc: func(obj interface{}) {
128-
nfr := obj.(*nfdv1alpha1.NodeFeature)
129-
klog.V(2).InfoS("NodeFeature deleted", "nodefeature", klog.KObj(nfr))
102+
}
103+
featureInformer := nfdinformersv1alpha1.New(informerFactory, "", tweakListOpts).NodeFeatures()
104+
if _, err := featureInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
105+
AddFunc: func(obj interface{}) {
106+
nfr := obj.(*nfdv1alpha1.NodeFeature)
107+
klog.V(2).InfoS("NodeFeature added", "nodefeature", klog.KObj(nfr))
108+
if c.isNamespaceSelected(nfr.Namespace) {
130109
c.updateOneNode("NodeFeature", nfr)
131-
if !nfdApiControllerOptions.DisableNodeFeatureGroup {
132-
c.updateAllNodeFeatureGroups()
133-
}
134-
},
135-
}); err != nil {
136-
return nil, err
137-
}
138-
c.featureLister = featureInformer.Lister()
110+
} else {
111+
klog.V(2).InfoS("NodeFeature namespace is not selected, skipping", "nodefeature", klog.KObj(nfr))
112+
}
113+
if !nfdApiControllerOptions.DisableNodeFeatureGroup {
114+
c.updateAllNodeFeatureGroups()
115+
}
116+
},
117+
UpdateFunc: func(oldObj, newObj interface{}) {
118+
nfr := newObj.(*nfdv1alpha1.NodeFeature)
119+
klog.V(2).InfoS("NodeFeature updated", "nodefeature", klog.KObj(nfr))
120+
c.updateOneNode("NodeFeature", nfr)
121+
if !nfdApiControllerOptions.DisableNodeFeatureGroup {
122+
c.updateAllNodeFeatureGroups()
123+
}
124+
},
125+
DeleteFunc: func(obj interface{}) {
126+
nfr := obj.(*nfdv1alpha1.NodeFeature)
127+
klog.V(2).InfoS("NodeFeature deleted", "nodefeature", klog.KObj(nfr))
128+
c.updateOneNode("NodeFeature", nfr)
129+
if !nfdApiControllerOptions.DisableNodeFeatureGroup {
130+
c.updateAllNodeFeatureGroups()
131+
}
132+
},
133+
}); err != nil {
134+
return nil, err
139135
}
136+
c.featureLister = featureInformer.Lister()
140137

141138
// Add informer for NodeFeatureRule objects
142139
nodeFeatureRuleInformer := informerFactory.Nfd().V1alpha1().NodeFeatureRules()
143140
if _, err := nodeFeatureRuleInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
144141
AddFunc: func(object interface{}) {
145142
klog.V(2).InfoS("NodeFeatureRule added", "nodefeaturerule", klog.KObj(object.(metav1.Object)))
146-
if !nfdApiControllerOptions.DisableNodeFeature {
147-
c.updateAllNodes()
148-
}
143+
c.updateAllNodes()
149144
},
150145
UpdateFunc: func(oldObject, newObject interface{}) {
151146
klog.V(2).InfoS("NodeFeatureRule updated", "nodefeaturerule", klog.KObj(newObject.(metav1.Object)))
152-
if !nfdApiControllerOptions.DisableNodeFeature {
153-
c.updateAllNodes()
154-
}
147+
c.updateAllNodes()
155148
},
156149
DeleteFunc: func(object interface{}) {
157150
klog.V(2).InfoS("NodeFeatureRule deleted", "nodefeaturerule", klog.KObj(object.(metav1.Object)))
158-
if !nfdApiControllerOptions.DisableNodeFeature {
159-
c.updateAllNodes()
160-
}
151+
c.updateAllNodes()
161152
},
162153
}); err != nil {
163154
return nil, err

0 commit comments

Comments
 (0)