diff --git a/controller/interfaces/networkdomain/pnd.go b/controller/interfaces/networkdomain/pnd.go index 256e3ec43ff8c6278cfd8bded7451b3cde90901c..c252c77709af0bfc434556005cb1851ab083da5c 100644 --- a/controller/interfaces/networkdomain/pnd.go +++ b/controller/interfaces/networkdomain/pnd.go @@ -41,7 +41,7 @@ type NetworkDomain interface { // LoadedPnd represents a PND that was loaded. type LoadedPnd struct { - ID string `json:"_id" bson:"_id"` + ID string `json:"id" bson:"id"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` } diff --git a/controller/nucleus/networkElementWatcher.go b/controller/nucleus/networkElementWatcher.go index 2afb43c56caee13fd7c839bcf893918e44a83ef4..7cba403d1f452e74a39223d814c3d393c6deeed3 100644 --- a/controller/nucleus/networkElementWatcher.go +++ b/controller/nucleus/networkElementWatcher.go @@ -8,7 +8,6 @@ import ( "code.fbi.h-da.de/danet/gosdn/controller/customerrs" "code.fbi.h-da.de/danet/gosdn/controller/event" eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event" - "code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkdomain" "code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement" "code.fbi.h-da.de/danet/gosdn/controller/interfaces/transport" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/types" @@ -22,7 +21,7 @@ import ( const ( subscribeSampleInterval uint64 = 1000000000 // 1 second in nanoseconds - // TODO: These gNMI options are adjusted to arista gNMI fork. Change when switching to native gNMI. + // Note: These gNMI options are adjusted to arista gNMI fork. Change when switching to native gNMI. gNMISubscribeMode string = "stream" gNMIStreamMode string = "on_change" ) @@ -63,37 +62,38 @@ func (n *NetworkElementWatcher) SubToNetworkElements(paths [][]string, opts *gnm } } - pnds, err := n.serviceManager.PndService.GetAll() + mnes, err := n.serviceManager.MneService.GetAll() if err != nil { log.Error(err) + return } - for _, pnd := range pnds { - n.subscribeToPndNetworkElements(pnd, opts) + for _, mne := range mnes { + n.subscribeToPndNetworkElements(mne, opts) } } -func (n *NetworkElementWatcher) subscribeToPndNetworkElements(pnd networkdomain.NetworkDomain, opts *gnmi.SubscribeOptions) { - for _, mne := range pnd.NetworkElements() { - subID := uuid.New() +func (n *NetworkElementWatcher) subscribeToPndNetworkElements(mne networkelement.NetworkElement, opts *gnmi.SubscribeOptions) { + subID := uuid.New() - stopContext, cancel := context.WithCancel(context.Background()) - n.addToNetworkElementSubscriptions(subID, &networkelementSubscriptionHelper{ - stopSubscribeCtx: stopContext, - stopFunc: cancel, - }) - go n.callSubscribe(stopContext, pnd.ID().String(), mne, opts) - } + stopContext, cancel := context.WithCancel(context.Background()) + n.addToNetworkElementSubscriptions(subID, &networkelementSubscriptionHelper{ + stopSubscribeCtx: stopContext, + stopFunc: cancel, + }) + + go n.callSubscribe(stopContext, mne, opts) } -func (n *NetworkElementWatcher) callSubscribe(stopContext context.Context, pndID string, mne networkelement.NetworkElement, opts *gnmi.SubscribeOptions) { +func (n *NetworkElementWatcher) callSubscribe(stopContext context.Context, mne networkelement.NetworkElement, opts *gnmi.SubscribeOptions) { gNMIOptionsCtx := context.Background() gNMIOptionsCtx = context.WithValue(gNMIOptionsCtx, types.CtxKeyOpts, opts) // SubscriptionInformation contains pnd ID, network element ID and name to be used in the internal subscribe to check // from which network element a response was sent if err := mne.Transport().ControlPlaneSubscribe(gNMIOptionsCtx, n.handleSubscribeResponse, &transport.SubscriptionInformation{ - PndID: pndID, + //TODO(PND): add pndID here, when adding pndID as reference to MNE! + //PndID: pndID, NetworkElementID: mne.ID().String(), NetworkElementName: mne.Name(), StopContext: stopContext, @@ -148,17 +148,7 @@ func (n *NetworkElementWatcher) handleSubscribeResponse(resp *gpb.SubscribeRespo } func (n *NetworkElementWatcher) handleSubscribeResponseUpdate(resp *gpb.SubscribeResponse_Update, subscriptionInfo *transport.SubscriptionInformation) { - pndID, err := uuid.Parse(subscriptionInfo.PndID) - if err != nil { - log.Error(err) - } - - pnd, err := n.serviceManager.PndService.Get(store.Query{ID: pndID}) - if err != nil { - log.Error(err) - } - - mne, err := pnd.GetNetworkElement(subscriptionInfo.NetworkElementID) + mne, err := n.serviceManager.MneService.Get(store.Query{ID: uuid.MustParse(subscriptionInfo.NetworkElementID)}) if err != nil { log.Error(err) }