diff --git a/cmd/nfd-topology-updater/main.go b/cmd/nfd-topology-updater/main.go index c585a7f19..88012e2aa 100644 --- a/cmd/nfd-topology-updater/main.go +++ b/cmd/nfd-topology-updater/main.go @@ -134,7 +134,7 @@ func initFlags(flagset *flag.FlagSet) (*topology.Args, *resourcemonitor.Args) { flagset.StringVar(&args.KubeConfigFile, "kubeconfig", "", "Kube config file.") flagset.DurationVar(&resourcemonitorArgs.SleepInterval, "sleep-interval", time.Duration(60)*time.Second, - "Time to sleep between CR updates. Non-positive value implies no CR updatation (i.e. infinite sleep). [Default: 60s]") + "Time to sleep between CR updates. zero means no CR updates on interval basis. [Default: 60s]") flagset.StringVar(&resourcemonitorArgs.Namespace, "watch-namespace", "*", "Namespace to watch pods (for testing/debugging purpose). Use * for all namespaces.") flagset.StringVar(&resourcemonitorArgs.KubeletConfigURI, "kubelet-config-uri", "", diff --git a/docs/reference/topology-updater-commandline-reference.md b/docs/reference/topology-updater-commandline-reference.md index aa67ac665..c22ebcb05 100644 --- a/docs/reference/topology-updater-commandline-reference.md +++ b/docs/reference/topology-updater-commandline-reference.md @@ -77,8 +77,7 @@ nfd-topology-updater -oneshot -no-publish ### -sleep-interval The `-sleep-interval` specifies the interval between resource hardware -topology re-examination (and CR updates). A non-positive value implies -infinite sleep interval, i.e. no re-detection is done. +topology re-examination (and CR updates). zero means no CR updates on interval basis. Default: 60s diff --git a/pkg/nfd-topology-updater/kubeletnotifier/kubeletnotifier.go b/pkg/nfd-topology-updater/kubeletnotifier/kubeletnotifier.go index 461673d7c..c0bd78fa6 100644 --- a/pkg/nfd-topology-updater/kubeletnotifier/kubeletnotifier.go +++ b/pkg/nfd-topology-updater/kubeletnotifier/kubeletnotifier.go @@ -63,10 +63,15 @@ func New(sleepInterval time.Duration, dest chan<- Info, kubeletStateDir string) } func (n *Notifier) Run() { - t := time.Tick(n.sleepInterval) + timeEvents := make(<-chan time.Time) + if n.sleepInterval > 0 { + ticker := time.NewTicker(n.sleepInterval) + timeEvents = ticker.C + } + for { select { - case <-t: + case <-timeEvents: klog.V(5).Infof("timer update received") i := Info{Event: IntervalBased} n.dest <- i