From dd31d67a53642d87217d889155801a2c6a7e3085 Mon Sep 17 00:00:00 2001 From: zhenqxuMSFT Date: Fri, 15 Sep 2023 02:58:27 +0800 Subject: [PATCH] Add error handler to recreate virtual node when it's deleted (#1143) --- node/nodeutil/controller.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/node/nodeutil/controller.go b/node/nodeutil/controller.go index cc09ab07c..f3b3205dd 100644 --- a/node/nodeutil/controller.go +++ b/node/nodeutil/controller.go @@ -251,6 +251,9 @@ type NodeConfig struct { // The default value is derived from the number of cores available. NumWorkers int + // Set the error handler for node status update failures + NodeStatusUpdateErrorHandler node.ErrorHandler + routeAttacher func(Provider, NodeConfig, corev1listers.PodLister) } @@ -365,11 +368,19 @@ func NewNode(name string, newProvider NewProviderFunc, opts ...NodeOpt) (*Node, } } + nodeControllerOpts := []node.NodeControllerOpt{ + node.WithNodeEnableLeaseV1(NodeLeaseV1Client(cfg.Client), node.DefaultLeaseDuration), + } + + if cfg.NodeStatusUpdateErrorHandler != nil { + nodeControllerOpts = append(nodeControllerOpts, node.WithNodeStatusUpdateErrorHandler(cfg.NodeStatusUpdateErrorHandler)) + } + nc, err := node.NewNodeController( np, &cfg.NodeSpec, cfg.Client.CoreV1().Nodes(), - node.WithNodeEnableLeaseV1(NodeLeaseV1Client(cfg.Client), node.DefaultLeaseDuration), + nodeControllerOpts..., ) if err != nil { return nil, errors.Wrap(err, "error creating node controller")