diff --git a/cli/cmd/subManagementAdd.go b/cli/cmd/subManagementAdd.go index b438f58166ffe4b0fb6180d0e797f4911d282aa1..e61ffbfbe5b2f80724bebb48e9298ba00f6407f1 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 8710ef3def57ebc956190fa3b8c6b6361a7dd704..762fffe8cc5b3858070c6df06f8d6bfb4597e336 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 e6d19efd4019d24a953db1745ab46a65e4562769..8b542d086ca5c61e7fb5d776137c6c11260fd858 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)