From cbcca9ed6c89d26837858234dcfbf3ba55ab3dff Mon Sep 17 00:00:00 2001
From: Malte Bauch <malte.bauch@h-da.de>
Date: Mon, 21 Oct 2024 15:06:18 +0200
Subject: [PATCH] Do not create different clients if already created

---
 controller/nucleus/gnmi_transport.go | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/controller/nucleus/gnmi_transport.go b/controller/nucleus/gnmi_transport.go
index a51770d76..f25f8c009 100644
--- a/controller/nucleus/gnmi_transport.go
+++ b/controller/nucleus/gnmi_transport.go
@@ -20,6 +20,8 @@ import (
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 )
 
+var gnmiClients = make(map[string]gpb.GNMIClient, 0)
+
 // Gnmi implements the Transport interface and provides an SBI with the
 // possibility to access a gNMI endpoint.
 type Gnmi struct {
@@ -64,9 +66,14 @@ func newGnmiTransport(opts *tpb.TransportOption, model shared.DeviceModel) (*Gnm
 		}
 	}
 
-	c, err := gnmi.Dial(gnmiConfig)
-	if err != nil {
-		return nil, err
+	var err error
+	c, ok := gnmiClients[opts.GetAddress()]
+	if !ok {
+		c, err = gnmi.Dial(gnmiConfig)
+		if err != nil {
+			return nil, err
+		}
+		gnmiClients[opts.GetAddress()] = c
 	}
 
 	log.WithFields(log.Fields{
-- 
GitLab