Skip to content

Commit 3b4d481

Browse files
ormergijcaamano
authored andcommitted
ovnkube: Intilize OVS client when runMode=node & for OVS metrics
Signed-off-by: Or Mergi <[email protected]>
1 parent c85774b commit 3b4d481

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

go-controller/cmd/ovnkube/ovnkube.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import (
2222
"k8s.io/klog/v2"
2323
kexec "k8s.io/utils/exec"
2424

25+
"github.com/ovn-org/libovsdb/client"
26+
2527
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/clustermanager"
2628
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/config"
2729
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/controllermanager"
@@ -521,12 +523,7 @@ func runOvnKube(ctx context.Context, runMode *ovnkubeRunMode, ovnClientset *util
521523
}()
522524
}
523525

524-
ovsClient, err := libovsdb.NewOVSClient(ctx.Done())
525-
if err != nil {
526-
cancel()
527-
return fmt.Errorf("failed to initialize libovsdb vswitchd client: %w", err)
528-
}
529-
526+
var ovsClient client.Client
530527
if runMode.node {
531528
wg.Add(1)
532529
go func() {
@@ -541,14 +538,20 @@ func runOvnKube(ctx context.Context, runMode *ovnkubeRunMode, ovnClientset *util
541538
// register ovnkube node specific prometheus metrics exported by the node
542539
metrics.RegisterNodeMetrics(ctx.Done())
543540

541+
ovsClient, err = libovsdb.NewOVSClient(ctx.Done())
542+
if err != nil {
543+
nodeErr = fmt.Errorf("failed to initialize libovsdb vswitchd client: %w", err)
544+
return
545+
}
544546
nodeControllerManager, err := controllermanager.NewNodeControllerManager(
545547
ovnClientset,
546548
watchFactory,
547549
runMode.identity,
548550
wg,
549551
eventRecorder,
550552
routemanager.NewController(),
551-
ovsClient)
553+
ovsClient,
554+
)
552555
if err != nil {
553556
nodeErr = fmt.Errorf("failed to create node network controller: %w", err)
554557
return
@@ -572,6 +575,14 @@ func runOvnKube(ctx context.Context, runMode *ovnkubeRunMode, ovnClientset *util
572575
// Note: for ovnkube node mode dpu-host no metrics is required as ovs/ovn is not running on the node.
573576
if config.OvnKubeNode.Mode != types.NodeModeDPUHost && config.Metrics.OVNMetricsBindAddress != "" {
574577
metricsScrapeInterval := 30
578+
defer cancel()
579+
580+
if ovsClient == nil {
581+
ovsClient, err = libovsdb.NewOVSClient(ctx.Done())
582+
if err != nil {
583+
return fmt.Errorf("failed to initialize libovsdb vswitchd client: %w", err)
584+
}
585+
}
575586
if config.Metrics.ExportOVSMetrics {
576587
metrics.RegisterOvsMetricsWithOvnMetrics(ovsClient, metricsScrapeInterval, ctx.Done())
577588
}

0 commit comments

Comments
 (0)