From 19086a0183ab1bc35bac8b28fa76dce788ca159f Mon Sep 17 00:00:00 2001 From: Fabian Seidl <fabian.seidl@h-da.de> Date: Wed, 30 Oct 2024 12:44:29 +0000 Subject: [PATCH] fix adding subscriptions --- cli/cmd/subManagementAdd.go | 4 +-- controller/northbound/server/submanagement.go | 26 +++++++++++-------- controller/nucleus/networkElementWatcher.go | 8 ++++++ 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/cli/cmd/subManagementAdd.go b/cli/cmd/subManagementAdd.go index b438f5816..e61ffbfbe 100644 --- a/cli/cmd/subManagementAdd.go +++ b/cli/cmd/subManagementAdd.go @@ -46,10 +46,10 @@ var subAddCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { spinner, _ := pterm.DefaultSpinner.Start("Adding subscription") - // TODO: add option to provide sub options?? + // Note: Currently, doesn't support providing options/paths. _, err := api.Add(createContextWithAuthorization(), viper.GetString("controllerAPIEndpoint"), mneUUID, nil) if err != nil { - pterm.Error.Println(err) + spinner.Fail(err) return } spinner.Success() diff --git a/controller/northbound/server/submanagement.go b/controller/northbound/server/submanagement.go index 8710ef3de..762fffe8c 100644 --- a/controller/northbound/server/submanagement.go +++ b/controller/northbound/server/submanagement.go @@ -138,22 +138,26 @@ func (s *SubManagementServer) Add(ctx context.Context, request *subpb.AddRequest }, err } - var paths [][]string - for _, path := range request.Subscription.Paths { - var elems []string - for _, elem := range path.Elem { - elems = append(elems, elem) + var gNMISubScribeOptions *gnmi.SubscribeOptions + if request.Subscription != nil { + var paths [][]string + for _, path := range request.Subscription.Paths { + var elems []string + for _, elem := range path.Elem { + elems = append(elems, elem) + } + paths = append(paths, elems) } - paths = append(paths, elems) - } - - err = s.networkElementWatchter.SubscribeToNetworkElementWithID(mneID, - &gnmi.SubscribeOptions{ + gNMISubScribeOptions = &gnmi.SubscribeOptions{ Mode: request.Subscription.SubscribeOptions.GnmiMode, StreamMode: request.Subscription.SubscribeOptions.GnmiStreamMode, SampleInterval: request.Subscription.SubscribeOptions.SampleInterval, Paths: paths, - }, + } + } + + err = s.networkElementWatchter.SubscribeToNetworkElementWithID(mneID, + gNMISubScribeOptions, ) if err != nil { return &subpb.AddResponse{ diff --git a/controller/nucleus/networkElementWatcher.go b/controller/nucleus/networkElementWatcher.go index e6d19efd4..8b542d086 100644 --- a/controller/nucleus/networkElementWatcher.go +++ b/controller/nucleus/networkElementWatcher.go @@ -108,6 +108,14 @@ func (n *NetworkElementWatcher) SubscribeToNetworkElement(mne networkelement.Net // SubscribeToNetworkElementWithID subscribes to the network element matching the provided ID according to provided SubscribeOptions. // SubscribeOptions can be nil. Use nil for a fixed, pre-defined set of gNMI subscription options (streaming in sample mode each second). func (n *NetworkElementWatcher) SubscribeToNetworkElementWithID(mneID uuid.UUID, opts *gnmi.SubscribeOptions) error { + if opts == nil { + opts = &gnmi.SubscribeOptions{ + Mode: gNMISubscribeMode, + StreamMode: gNMIStreamMode, + SampleInterval: subscribeSampleInterval, + } + } + mne, err := n.mneService.Get(store.Query{ID: mneID}) if err != nil { log.Error(err) -- GitLab