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

added values to event, removed writing to storage on update

parent d96ddaa8
Branches
No related tags found
No related merge requests found
Pipeline #125395 passed
...@@ -4,10 +4,10 @@ import "github.com/google/uuid" ...@@ -4,10 +4,10 @@ import "github.com/google/uuid"
// Event is a event that can be published via the event service as payload. // Event is a event that can be published via the event service as payload.
type Event struct { type Event struct {
ID uuid.UUID `json:"id,omitempty"` ID uuid.UUID `json:"id,omitempty"`
EntityID uuid.UUID `json:"entity_id,omitempty"` EntityID uuid.UUID `json:"entity_id,omitempty"`
Type string `json:"type,omitempty"` Type string `json:"type,omitempty"`
Paths []string `json:"paths,omitempty"` PathsAndValuesMap map[string]string `json:"paths_and_values,omitempty"`
} }
const ( const (
...@@ -49,11 +49,11 @@ func NewUpdateEvent(entityID uuid.UUID) Event { ...@@ -49,11 +49,11 @@ func NewUpdateEvent(entityID uuid.UUID) Event {
} }
// NewMneUpdateEvent creates a new update event for managed network elements. // 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{ return Event{
ID: uuid.New(), ID: uuid.New(),
EntityID: entityID, EntityID: entityID,
Type: TypeUpdate, Type: TypeUpdate,
Paths: paths, PathsAndValuesMap: pathsAndValues,
} }
} }
...@@ -123,8 +123,8 @@ func TestNewUpdateEvent(t *testing.T) { ...@@ -123,8 +123,8 @@ func TestNewUpdateEvent(t *testing.T) {
func TestNewMneUpdateEvent(t *testing.T) { func TestNewMneUpdateEvent(t *testing.T) {
type args struct { type args struct {
entityID uuid.UUID entityID uuid.UUID
paths []string pathsAndValuesMap map[string]string
} }
tests := []struct { tests := []struct {
name string name string
...@@ -134,20 +134,20 @@ func TestNewMneUpdateEvent(t *testing.T) { ...@@ -134,20 +134,20 @@ func TestNewMneUpdateEvent(t *testing.T) {
{ {
name: "should create a new update event", name: "should create a new update event",
args: args{ args: args{
entityID: getTestEntityUUID(), entityID: getTestEntityUUID(),
paths: []string{"some/random/path"}, pathsAndValuesMap: map[string]string{"some/random/path": "val"},
}, },
want: Event{ want: Event{
ID: uuid.New(), ID: uuid.New(),
EntityID: getTestEntityUUID(), EntityID: getTestEntityUUID(),
Type: TypeUpdate, Type: TypeUpdate,
Paths: []string{"some/random/path"}, PathsAndValuesMap: map[string]string{"some/random/path": "val"},
}, },
}, },
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { 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) { if !reflect.DeepEqual(got.EntityID, tt.want.EntityID) {
t.Errorf("NewMneUpdateEvent().EntityID = %v, want %v", got, tt.want) t.Errorf("NewMneUpdateEvent().EntityID = %v, want %v", got, tt.want)
...@@ -157,7 +157,7 @@ func TestNewMneUpdateEvent(t *testing.T) { ...@@ -157,7 +157,7 @@ func TestNewMneUpdateEvent(t *testing.T) {
t.Errorf("NewMneUpdateEvent().Type = %v, want %v", got, tt.want) 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) t.Errorf("NewMneUpdateEvent().Type = %v, want %v", got, tt.want)
} }
}) })
......
...@@ -137,8 +137,8 @@ func (s *NetworkElementService) UpdateModel(networkElementToUpdate networkelemen ...@@ -137,8 +137,8 @@ func (s *NetworkElementService) UpdateModel(networkElementToUpdate networkelemen
return err return err
} }
// TODO (faseid): check if we want to add the paths here instead of empty string array! // TODO (faseid): check if we want to add the paths here instead of empty map!
pubEvent := event.NewMneUpdateEvent(networkElementToUpdate.ID(), []string{}) pubEvent := event.NewMneUpdateEvent(networkElementToUpdate.ID(), map[string]string{})
if err := s.eventService.PublishEvent(NetworkElementEventTopic, pubEvent); err != nil { if err := s.eventService.PublishEvent(NetworkElementEventTopic, pubEvent); err != nil {
go func() { go func() {
s.eventService.Reconnect() s.eventService.Reconnect()
...@@ -160,8 +160,8 @@ func (s *NetworkElementService) Update(networkElementToUpdate networkelement.Net ...@@ -160,8 +160,8 @@ func (s *NetworkElementService) Update(networkElementToUpdate networkelement.Net
return err return err
} }
// TODO (faseid): check if we want to add the paths here instead of empty string array! // TODO (faseid): check if we want to add the paths here instead of empty map!
pubEvent := event.NewMneUpdateEvent(networkElementToUpdate.ID(), []string{}) pubEvent := event.NewMneUpdateEvent(networkElementToUpdate.ID(), map[string]string{})
if err := s.eventService.PublishEvent(NetworkElementEventTopic, pubEvent); err != nil { if err := s.eventService.PublishEvent(NetworkElementEventTopic, pubEvent); err != nil {
go func() { go func() {
s.eventService.Reconnect() s.eventService.Reconnect()
......
...@@ -3,6 +3,7 @@ package nucleus ...@@ -3,6 +3,7 @@ package nucleus
import ( import (
"context" "context"
"fmt" "fmt"
"strings"
"code.fbi.h-da.de/danet/gosdn/controller/customerrs" "code.fbi.h-da.de/danet/gosdn/controller/customerrs"
"code.fbi.h-da.de/danet/gosdn/controller/event" "code.fbi.h-da.de/danet/gosdn/controller/event"
...@@ -164,19 +165,24 @@ func (n *NetworkElementWatcher) handleSubscribeResponseUpdate(resp *gpb.Subscrib ...@@ -164,19 +165,24 @@ func (n *NetworkElementWatcher) handleSubscribeResponseUpdate(resp *gpb.Subscrib
err = mne.Transport().ProcessControlPlaneSubscribeResponse(resp, mne.GetModel(), mne.SBI().Schema()) err = mne.Transport().ProcessControlPlaneSubscribeResponse(resp, mne.GetModel(), mne.SBI().Schema())
if err != nil { if err != nil {
log.Error(err) 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 { 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 { if err := n.eventService.PublishEvent(NetworkElementEventTopic, pubEvent); err != nil {
go func() { go func() {
n.eventService.Reconnect() n.eventService.Reconnect()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment