Skip to content
Snippets Groups Projects
Commit ed32eddd authored by Fabian Seidl's avatar Fabian Seidl
Browse files

added values to event, removed writing to storage on update

parent ebc4f72e
No related branches found
No related tags found
1 merge request!405Resolve "To improve the device watching mechanism a fetch all after time interval method should be implemented"
......@@ -7,7 +7,7 @@ type Event struct {
ID uuid.UUID `json:"id,omitempty"`
EntityID uuid.UUID `json:"entity_id,omitempty"`
Type string `json:"type,omitempty"`
Paths []string `json:"paths,omitempty"`
PathsAndValuesMap map[string]string `json:"paths_and_values,omitempty"`
}
const (
......@@ -49,11 +49,11 @@ func NewUpdateEvent(entityID uuid.UUID) Event {
}
// NewMneUpdateEvent creates a new update event for managed network elements.
func NewMneUpdateEvent(entityID uuid.UUID, paths []string) Event {
func NewMneUpdateEvent(entityID uuid.UUID, pathsAndValues map[string]string) Event {
return Event{
ID: uuid.New(),
EntityID: entityID,
Type: TypeUpdate,
Paths: paths,
PathsAndValuesMap: pathsAndValues,
}
}
......@@ -124,7 +124,7 @@ func TestNewUpdateEvent(t *testing.T) {
func TestNewMneUpdateEvent(t *testing.T) {
type args struct {
entityID uuid.UUID
paths []string
pathsAndValuesMap map[string]string
}
tests := []struct {
name string
......@@ -135,19 +135,19 @@ func TestNewMneUpdateEvent(t *testing.T) {
name: "should create a new update event",
args: args{
entityID: getTestEntityUUID(),
paths: []string{"some/random/path"},
pathsAndValuesMap: map[string]string{"some/random/path": "val"},
},
want: Event{
ID: uuid.New(),
EntityID: getTestEntityUUID(),
Type: TypeUpdate,
Paths: []string{"some/random/path"},
PathsAndValuesMap: map[string]string{"some/random/path": "val"},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := NewMneUpdateEvent(tt.args.entityID, tt.args.paths)
got := NewMneUpdateEvent(tt.args.entityID, tt.args.pathsAndValuesMap)
if !reflect.DeepEqual(got.EntityID, tt.want.EntityID) {
t.Errorf("NewMneUpdateEvent().EntityID = %v, want %v", got, tt.want)
......@@ -157,7 +157,7 @@ func TestNewMneUpdateEvent(t *testing.T) {
t.Errorf("NewMneUpdateEvent().Type = %v, want %v", got, tt.want)
}
if !reflect.DeepEqual(got.Paths, tt.want.Paths) {
if !reflect.DeepEqual(got.PathsAndValuesMap, tt.want.PathsAndValuesMap) {
t.Errorf("NewMneUpdateEvent().Type = %v, want %v", got, tt.want)
}
})
......
......@@ -137,8 +137,8 @@ func (s *NetworkElementService) UpdateModel(networkElementToUpdate networkelemen
return err
}
// TODO (faseid): check if we want to add the paths here instead of empty string array!
pubEvent := event.NewMneUpdateEvent(networkElementToUpdate.ID(), []string{})
// TODO (faseid): check if we want to add the paths here instead of empty map!
pubEvent := event.NewMneUpdateEvent(networkElementToUpdate.ID(), map[string]string{})
if err := s.eventService.PublishEvent(NetworkElementEventTopic, pubEvent); err != nil {
go func() {
s.eventService.Reconnect()
......@@ -160,8 +160,8 @@ func (s *NetworkElementService) Update(networkElementToUpdate networkelement.Net
return err
}
// TODO (faseid): check if we want to add the paths here instead of empty string array!
pubEvent := event.NewMneUpdateEvent(networkElementToUpdate.ID(), []string{})
// TODO (faseid): check if we want to add the paths here instead of empty map!
pubEvent := event.NewMneUpdateEvent(networkElementToUpdate.ID(), map[string]string{})
if err := s.eventService.PublishEvent(NetworkElementEventTopic, pubEvent); err != nil {
go func() {
s.eventService.Reconnect()
......
......@@ -3,6 +3,7 @@ package nucleus
import (
"context"
"fmt"
"strings"
"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
"code.fbi.h-da.de/danet/gosdn/controller/event"
......@@ -164,19 +165,24 @@ func (n *NetworkElementWatcher) handleSubscribeResponseUpdate(resp *gpb.Subscrib
err = mne.Transport().ProcessControlPlaneSubscribeResponse(resp, mne.GetModel(), mne.SBI().Schema())
if err != nil {
log.Error(err)
} // else {
// if err := pnd.UpdateNetworkElementAfterSubscribeResponse(mne); err != nil {
// log.Error(err)
// }
// }
}
paths := []string{}
pathsAndValues := make(map[string]string, 0)
for _, update := range resp.Update.Update {
paths = append(paths, update.String())
pathString := ""
// go through elem to build full path
for _, elem := range update.Path.Elem {
// remove unwanted parts of path string example: "name:\"system\"" -> "system"
filteredElem := elem.String()[strings.Index(elem.String(), ":\"")+2 : len(elem.String())-1]
pathString += filteredElem + "/"
}
pathsAndValues[pathString] = update.Val.GetStringVal()
}
pubEvent := event.NewMneUpdateEvent(mne.ID(), paths)
pubEvent := event.NewMneUpdateEvent(mne.ID(), pathsAndValues)
if err := n.eventService.PublishEvent(NetworkElementEventTopic, pubEvent); err != nil {
go func() {
n.eventService.Reconnect()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment