diff --git a/controller/nucleus/gnmi_transport.go b/controller/nucleus/gnmi_transport.go index a51770d764f2abd12b28941000cacd2860c9e8fe..f25f8c0093e828916bb5c0fe88defcb3b22cd6f1 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{