@@ -30,6 +30,7 @@ import (
3030
3131 "maps"
3232
33+ "github.com/fsnotify/fsnotify"
3334 "github.com/prometheus/client_golang/prometheus"
3435 "github.com/prometheus/client_golang/prometheus/promhttp"
3536 "golang.org/x/net/context"
@@ -55,7 +56,7 @@ import (
5556 _ "sigs.k8s.io/node-feature-discovery/source/custom"
5657 _ "sigs.k8s.io/node-feature-discovery/source/fake"
5758 _ "sigs.k8s.io/node-feature-discovery/source/kernel"
58- _ "sigs.k8s.io/node-feature-discovery/source/local"
59+ "sigs.k8s.io/node-feature-discovery/source/local"
5960 _ "sigs.k8s.io/node-feature-discovery/source/memory"
6061 _ "sigs.k8s.io/node-feature-discovery/source/network"
6162 _ "sigs.k8s.io/node-feature-discovery/source/pci"
@@ -121,6 +122,8 @@ type nfdWorker struct {
121122 k8sClient k8sclient.Interface
122123 nfdClient nfdclient.Interface
123124 stop chan struct {} // channel for signaling stop
125+ fsEvent chan fsnotify.Event
126+ fsWatcher * fsnotify.Watcher
124127 featureSources []source.FeatureSource
125128 labelSources []source.LabelSource
126129 ownerReference []metav1.OwnerReference
@@ -304,6 +307,13 @@ func (w *nfdWorker) Run() error {
304307 labelTrigger .Reset (w .config .Core .SleepInterval .Duration )
305308 defer labelTrigger .Stop ()
306309
310+ if s := source .GetFeatureSource ("local" ); s != nil {
311+ w .fsWatcher = local .FSWatcher
312+ if w .fsWatcher != nil {
313+ defer w .fsWatcher .Close ()
314+ }
315+ }
316+
307317 httpMux := http .NewServeMux ()
308318
309319 // Register to metrics server
@@ -341,6 +351,13 @@ func (w *nfdWorker) Run() error {
341351 return err
342352 }
343353
354+ case event := <- w .fsWatcher .Events :
355+ if event .Op & fsnotify .Create == fsnotify .Create || event .Op & fsnotify .Write == fsnotify .Write || event .Op & fsnotify .Remove == fsnotify .Remove || event .Op & fsnotify .Rename == fsnotify .Rename || event .Op & fsnotify .Chmod == fsnotify .Chmod {
356+ err = w .runFeatureDiscovery ()
357+ if err != nil {
358+ return err
359+ }
360+ }
344361 case <- w .stop :
345362 klog .InfoS ("shutting down nfd-worker" )
346363 return nil
0 commit comments