Skip to content

Commit 45ebdf6

Browse files
authored
feat(NodeController): made node polling interval configurable (#256)
* Added configurable polling interval Signed-off-by: Omri Cohen <[email protected]> * CR comment - changed pollInterval to be the last argument for lvmnode Start Signed-off-by: Omri Cohen <[email protected]> --------- Signed-off-by: Omri Cohen <[email protected]>
1 parent 400159d commit 45ebdf6

File tree

5 files changed

+13
-5
lines changed

5 files changed

+13
-5
lines changed

cmd/main.go

+4
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ func main() {
130130
"--wbps-per-gb=\"vg1-prefix:100,vg2-prefix:200\"",
131131
)
132132

133+
cmd.PersistentFlags().IntVar(
134+
&config.NodeControllerPollingInterval, "node-polling-interval", 60, "The interval, in seconds, between node polling.",
135+
)
136+
133137
err := cmd.Execute()
134138
if err != nil {
135139
_, _ = fmt.Fprintf(os.Stderr, "%s", err.Error())

pkg/driver/agent.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func NewNode(d *CSIDriver) csi.NodeServer {
6666

6767
// start the lvm node resource watcher
6868
go func() {
69-
err := lvmnode.Start(&ControllerMutex, stopCh)
69+
err := lvmnode.Start(&ControllerMutex, stopCh, d.config.NodeControllerPollingInterval)
7070
if err != nil {
7171
klog.Fatalf("Failed to start LVM node controller: %s", err.Error())
7272
}

pkg/driver/config/config.go

+3
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ type Config struct {
8585

8686
// KubeAPIBurst is the burst to allow while talking with Kubernetes API server.
8787
KubeAPIBurst int
88+
89+
// NodeControllerPollingInterval is the interval, in seconds, between node polling.
90+
NodeControllerPollingInterval int
8891
}
8992

9093
// Default returns a new instance of config

pkg/mgmt/lvmnode/builder.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ type NodeController struct {
8383

8484
// This function returns controller object with all required keys set to watch over lvmnode object
8585
func newNodeController(kubeClient kubernetes.Interface, client dynamic.Interface,
86-
dynInformer dynamicinformer.DynamicSharedInformerFactory, ownerRef metav1.OwnerReference) (*NodeController, error) {
86+
dynInformer dynamicinformer.DynamicSharedInformerFactory, ownerRef metav1.OwnerReference,
87+
pollInterval int) (*NodeController, error) {
8788
//Creating informer for lvm node resource
8889
nodeInformer := dynInformer.ForResource(noderesource).Informer()
8990
eventBroadcaster := record.NewBroadcaster()
@@ -102,7 +103,7 @@ func newNodeController(kubeClient kubernetes.Interface, client dynamic.Interface
102103
Name: "Node",
103104
}),
104105
recorder: recorder,
105-
pollInterval: 60 * time.Second,
106+
pollInterval: time.Duration(pollInterval) * time.Second,
106107
ownerRef: ownerRef,
107108
}
108109

pkg/mgmt/lvmnode/start.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import (
3535
)
3636

3737
// Start starts the lvmnode controller.
38-
func Start(controllerMtx *sync.RWMutex, stopCh <-chan struct{}) error {
38+
func Start(controllerMtx *sync.RWMutex, stopCh <-chan struct{}, pollInterval int) error {
3939

4040
// Get in cluster config
4141
cfg, err := k8sapi.Config().Get()
@@ -84,7 +84,7 @@ func Start(controllerMtx *sync.RWMutex, stopCh <-chan struct{}) error {
8484
// This lock is used to serialize the AddToScheme call of all controllers.
8585
controllerMtx.Lock()
8686

87-
controller, err := newNodeController(kubeClient, openebsClientNew, nodeInformerFactory, ownerRef)
87+
controller, err := newNodeController(kubeClient, openebsClientNew, nodeInformerFactory, ownerRef, pollInterval)
8888
if err != nil {
8989
return errors.Wrap(err, "failed to create new lvm node controller")
9090
}

0 commit comments

Comments
 (0)