X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2FrNibWriter%2FrNibWriter.go;h=670ee6b59feab5b054350d09dc3282c6e4be030c;hb=refs%2Fchanges%2F05%2F4505%2F1;hp=4c84d4913cfff89f9a62702fa22badf53f560c7b;hpb=dc8932a553fabccf33b5cbb4e37084362493dbcf;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/rNibWriter/rNibWriter.go b/E2Manager/rNibWriter/rNibWriter.go index 4c84d49..670ee6b 100644 --- a/E2Manager/rNibWriter/rNibWriter.go +++ b/E2Manager/rNibWriter/rNibWriter.go @@ -46,6 +46,7 @@ RNibWriter interface allows saving data to the redis DB type RNibWriter interface { SaveNodeb(nodebInfo *entities.NodebInfo) error UpdateNodebInfo(nodebInfo *entities.NodebInfo) error + UpdateNodebInfoAndPublish(nodebInfo *entities.NodebInfo) error SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error SaveE2TInstance(e2tInstance *entities.E2TInstance) error SaveE2TAddresses(addresses []string) error @@ -59,6 +60,7 @@ type RNibWriter interface { UpdateEnb(nodebInfo *entities.NodebInfo, servedCells []*entities.ServedCellInfo) error AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error RemoveNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error + AddEnb(nodebInfo *entities.NodebInfo) error } /* @@ -69,6 +71,10 @@ func GetRNibWriter(sdl common.ISdlInstance, rnibWriterConfig configuration.RnibW return &rNibWriterInstance{sdl: sdl, rnibWriterConfig: rnibWriterConfig} } +func getChannelsAndEventsPair(channel string, ranName string, event string) []string { + return []string{channel, fmt.Sprintf("%s_%s", ranName, event)} +} + func (w *rNibWriterInstance) AddNbIdentity(nodeType entities.Node_Type, nbIdentity *entities.NbIdentity) error { nbIdData, err := proto.Marshal(nbIdentity) @@ -162,12 +168,48 @@ func (w *rNibWriterInstance) SaveNodeb(nodebInfo *entities.NodebInfo) error { } } - if nodebInfo.GetNodeType() == entities.Node_ENB { - err = w.sdl.SetAndPublish([]string{w.rnibWriterConfig.RanManipulationMessageChannel, fmt.Sprintf("%s_%s", nodebInfo.RanName, RanAddedEvent)}, pairs) - } else { - err = w.sdl.Set(pairs) + err = w.sdl.Set(pairs) + + if err != nil { + return common.NewInternalError(err) } + return nil +} + +func (w *rNibWriterInstance) AddEnb(nodebInfo *entities.NodebInfo) error { + + data, err := proto.Marshal(nodebInfo) + + if err != nil { + return common.NewInternalError(err) + } + + var pairs []interface{} + key, rNibErr := common.ValidateAndBuildNodeBNameKey(nodebInfo.RanName) + + if rNibErr != nil { + return rNibErr + } + + pairs = append(pairs, key, data) + + if nodebInfo.GlobalNbId != nil { + + key, rNibErr = common.ValidateAndBuildNodeBIdKey(nodebInfo.GetNodeType().String(), nodebInfo.GlobalNbId.GetPlmnId(), nodebInfo.GlobalNbId.GetNbId()) + if rNibErr != nil { + return rNibErr + } + pairs = append(pairs, key, data) + } + + pairs, rNibErr = appendEnbCells(nodebInfo.RanName, nodebInfo.GetEnb().GetServedCells(), pairs) + if rNibErr != nil { + return rNibErr + } + + channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanAddedEvent) + err = w.sdl.SetAndPublish(channelsAndEvents, pairs) if err != nil { return common.NewInternalError(err) } @@ -189,7 +231,8 @@ func (w *rNibWriterInstance) UpdateGnbCells(nodebInfo *entities.NodebInfo, serve return err } - err = w.sdl.Set(pairs) + channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanUpdatedEvent) + err = w.sdl.SetAndPublish(channelsAndEvents, pairs) if err != nil { return common.NewInternalError(err) @@ -298,10 +341,7 @@ func (w *rNibWriterInstance) RemoveNbIdentity(nodeType entities.Node_Type, nbIde return nil } -/* -UpdateNodebInfo... -*/ -func (w *rNibWriterInstance) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error { +func (w *rNibWriterInstance) updateNodebInfo(nodebInfo *entities.NodebInfo, publish bool) error { pairs, err := buildUpdateNodebInfoPairs(nodebInfo) @@ -309,7 +349,12 @@ func (w *rNibWriterInstance) UpdateNodebInfo(nodebInfo *entities.NodebInfo) erro return err } - err = w.sdl.Set(pairs) + if publish { + channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanUpdatedEvent) + err = w.sdl.SetAndPublish(channelsAndEvents, pairs) + } else { + err = w.sdl.Set(pairs) + } if err != nil { return common.NewInternalError(err) @@ -318,6 +363,21 @@ func (w *rNibWriterInstance) UpdateNodebInfo(nodebInfo *entities.NodebInfo) erro return nil } +/* +UpdateNodebInfo... +*/ +func (w *rNibWriterInstance) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error { + return w.updateNodebInfo(nodebInfo, false) +} + +/* +UpdateNodebInfoAndPublish... +*/ +func (w *rNibWriterInstance) UpdateNodebInfoAndPublish(nodebInfo *entities.NodebInfo) error { + return w.updateNodebInfo(nodebInfo, true) +} + + /* SaveRanLoadInformation stores ran load information for the provided ran */ @@ -452,7 +512,8 @@ func (w *rNibWriterInstance) RemoveEnb(nodebInfo *entities.NodebInfo) error { return err } - err = w.sdl.RemoveAndPublish([]string{w.rnibWriterConfig.RanManipulationMessageChannel, fmt.Sprintf("%s_%s", nodebInfo.RanName, RanDeletedEvent)}, keysToRemove) + channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanDeletedEvent) + err = w.sdl.RemoveAndPublish(channelsAndEvents, keysToRemove) if err != nil { return common.NewInternalError(err) @@ -475,7 +536,8 @@ func (w *rNibWriterInstance) UpdateEnb(nodebInfo *entities.NodebInfo, servedCell return err } - err = w.sdl.SetAndPublish([]string{w.rnibWriterConfig.RanManipulationMessageChannel, fmt.Sprintf("%s_%s", nodebInfo.RanName, RanUpdatedEvent)}, pairs) + channelsAndEvents := getChannelsAndEventsPair(w.rnibWriterConfig.RanManipulationMessageChannel, nodebInfo.RanName, RanUpdatedEvent) + err = w.sdl.SetAndPublish(channelsAndEvents, pairs) if err != nil { return common.NewInternalError(err) @@ -531,4 +593,4 @@ func appendGnbCells(inventoryName string, cells []*entities.ServedNRCell, pairs pairs = append(pairs, key, cellData) } return pairs, nil -} \ No newline at end of file +}