1
0
Fork 0
mirror of https://github.com/kubernetes-sigs/node-feature-discovery.git synced 2025-03-05 16:27:05 +00:00

nfd-topology-updater: fix kubelet state file notifier

- kubelet_internal_checkpoint file is in /var/lib/kubelet/device-plugins not /var/lib/kubelet
  fsWatcher doesn't watch dirs recursively
- e.Name returned from fsWatcher events is a full path not a basename

Signed-off-by: pprokop <pprokop@nvidia.com>
This commit is contained in:
pprokop 2023-04-21 14:39:30 +02:00
parent 5d9907ae86
commit 5a9a12151c

View file

@ -18,6 +18,7 @@ package kubeletnotifier
import ( import (
"fmt" "fmt"
"path"
"time" "time"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
@ -31,6 +32,8 @@ type EventType string
const ( const (
IntervalBased EventType = "intervalBased" IntervalBased EventType = "intervalBased"
FSUpdate EventType = "fsUpdate" FSUpdate EventType = "fsUpdate"
devicePluginsDirName = "device-plugins"
) )
var stateFiles = sets.NewString( var stateFiles = sets.NewString(
@ -51,7 +54,8 @@ type Info struct {
} }
func New(sleepInterval time.Duration, dest chan<- Info, kubeletStateDir string) (*Notifier, error) { func New(sleepInterval time.Duration, dest chan<- Info, kubeletStateDir string) (*Notifier, error) {
ch, err := createFSWatcherEvent([]string{kubeletStateDir}) devicePluginsDir := path.Join(kubeletStateDir, devicePluginsDirName)
ch, err := createFSWatcherEvent([]string{kubeletStateDir, devicePluginsDir})
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -77,8 +81,9 @@ func (n *Notifier) Run() {
n.dest <- i n.dest <- i
case e := <-n.fsEvent: case e := <-n.fsEvent:
klog.V(5).Infof("fsnotify event from file %q: %q received", e.Name, e.Op) basename := path.Base(e.Name)
if stateFiles.Has(e.Name) { klog.V(5).Infof("fsnotify event from file %q: %q received", basename, e.Op)
if stateFiles.Has(basename) {
i := Info{Event: FSUpdate} i := Info{Event: FSUpdate}
n.dest <- i n.dest <- i
} }